1. 程式人生 > >n個元素入棧順序一定時,出棧順序的可能性數量

n個元素入棧順序一定時,出棧順序的可能性數量

設出棧順序的可能性為f(n)

結論:f(n) = C(2n,n)/(n+1)

證明:

     首先,有n個元素時,入棧出棧操作總共需要2n個,其中必須有n個為出棧操作,得到C(2n,n)。顯然這樣操作完之後剩餘元素數量為0

     然後,對於這些操作,在任何一個時間節點上,入棧操作次數必須大於等於出棧操作次數。當出現不合法的情況時,棧中會剩餘-1個元素,我們將第一次使棧中出現-1個元素的操作後面的操作都進行翻轉,這樣本來後來的操作之和會使元素增加至0,但是翻轉後,會使最終元素為-2個。則可知此時入棧操作為n-1個,出棧操作為n+1個。得非法運算元量為C(2n,n-1)。

於是f(n) =C(2n,n) - C(2n,n-1),化簡即得f(n) = C(2n,n)/(n+1)