N個元素順序進棧,那麼所有可能出棧序列有哪些

時間 2021-05-07 20:01:41

1樓:匿名使用者

分析:對於每一個數來說,必須進棧一次、出棧一次。我們把進棧設為狀態『1』,出棧設為狀態『0』。

n個數的所有狀態對應n個1和n個0組成的2n位二進位制數。由於等待入棧的運算元按照1‥n的順序排列、入棧的運算元b大於等於出棧的...

n個元素進棧,共有多少種出棧順序

2樓:匿名使用者

冷凝水**系統**蒸汽系統排出的高溫冷凝水,可最大限度地利用冷凝水的熱量,節約用水,節約燃料。對工廠的節能降耗,提高經濟效益有顯著的作用。冷凝水**系統大致可分為開式**系統和閉式**系統兩種。

3樓:匿名使用者

答案:2n!

制/((n+1)n!n!) 設bn表示n個元素出棧bai序列的種du數,

zhi顯然b1=1, b2=2,如下2種: 1,2 2,1 b3=5,如下5種: 1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 一般地

daobn=2n!/((n+1)n!n!),並滿足遞推關係 bn= b0*bn-1+ b0*bn-1+…+ bn-1*b0,其中b0=1 4

n 個元素順序入棧,則可能的出棧序列有多少

4樓:悽清的小白鼠

我來補充吧,其實進棧出棧是可以同時進行的,並不一定要全部進去再出來,可以先進一部分再出來,所以關鍵是從那個開始先出

1.第一個先出的為d 則必須為dcba

2.第一個出來的是c則可為 cdba (abc依次進然後c出來d進去再出來然後ba出來) 也可為cbad (cb出來d進 、出,a出)也可為cbda 就是c之前的ab必須先b再a 因為是a先進而b是後進(注意是沒有出去)

3、同理第一個為b時可以為 bcda、bdca、bacd、badc、bcad(bdac是不行的因為要d排第二必須c進去而沒有出來也就是說c必須先a而出)

5樓:憑實陀雪

n個資料依次入棧,出棧順序種數的遞推公式如下:

f(n)=∑(f(n-1-k)*fk);其中k從0到n-1已知f0=1,

f1=f0*f0=1

f2=f1*f0+f0*f1=2

f3=f2*f0+f1*f1+f0*f2=5……證明的話,對於n個資料,我只看第一個資料的出入棧順序:

第一個資料入棧到出棧之間可以包含0,1,2…n-1個資料的出入棧,相應的,第一個資料出棧之後,還有n-1,n-2…2,1,0個資料需要出入棧

根據組合數學裡面的乘法原理,需要把第一個資料出棧前後的種數相乘根據加法原理,需要把第一個資料出入棧的n種方式全加起來於是就得到了那個遞推公式,不過,要找出一個直接計算fn的公式似乎不太好辦。

n個元素進棧,共有多少種出棧順序?

6樓:鑫匆轎

近日在複習資料結構,看到棧的時候,發

說來慚愧,以前學資料結構的時候竟然沒有考慮過這個問題。最近在看動態規劃,所以「子問題」這3個字一直在我腦中徘徊,於是解決這個問題的時候我也是用類似「子問題」的方法,說白了就是遞推公式。

我們把n個元素的出棧個數的記為f(n), 那麼對於1,2,3, 我們很容易得出:f(1) =1//即 1f(2)= 2

//即 12、21f(3)= 5//即 123、132、213、321、231

然後我們來考慮f(4), 我們給4個元素編號為a,b,c,d, 那麼考慮:元素a只可能出現在1號位置,2號位置,3號位置和4號位置(很容易理解,一共就4個位置,比如abcd,元素a就在1號位置)。

分析:1) 如果元素a在1號位置,那麼只可能a進棧,馬上出棧,此時還剩元素b、c、d等待操作,就是子問題f(3);

2) 如果元素a在2號位置,那麼一定有一個元素比a先出棧,即有f(1)種可能順序(只能是b),還剩c、d,即f(2), 根據乘法原理,一共的順序個數為f(1) * f(2);

3) 如果元素a在3號位置,那麼一定有兩個元素比1先出棧,即有f(2)種可能順序(只能是b、c),還剩d,即f(1),

根據乘法原理,一共的順序個數為f(2) * f(1);

4) 如果元素a在4號位置,那麼一定是a先進棧,最後出棧,那麼元素b、c、d的出棧順序即是此小問題的解,即 f(3);

結合所有情況,即f(4) = f(3) + f(2) * f(1) + f(1) * f(2) + f(3);

為了規整化,我們定義f(0) = 1;於是f(4)可以重新寫為:

f(4) = f(0)*f(3) + f(1)*f(2) + f(2) * f(1) + f(3)*f(0)

然後我們推廣到n,推廣思路和n=4時完全一樣,於是我們可以得到:

f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(n-1)*f(0)即

於是上網搜尋一下,原來真的有這麼一個公式:

c(2n,n)/(n+1)

(c(2n,n)表示2n裡取n),並且有個名字叫

有n個入棧元素依次進棧,則有多少種出棧序列

7樓:小熙

你的問題的答案為2的n-1次方個。

根據你的問題可以轉換為:1,2,3,4,n。這n個數字依次按從小到大的順序入棧,那出來的序列有多少種。

已經驗證

當n=1時,有1種,

當n=2時,有2種,

當n=3時,有4種,

當n=4時,有8種,

根據規律可以推算出:y(n)=2^(n-1)。

證明:當n≥1時

通過觀察可以得到

式1:y(n)=y(n-1)+y(n-2)+y(n-3)+.+y(1)+1

式2:y(n-1)=y(n-2)+y(n-3)+.+y(1)+1那麼y(n)-y(n-1)=y(n-1)

也就是y(n)=2*y(n-1)

那麼y(n)=2^(n-1)*y(1),

因為y(1)=1,那麼y(n)=2^(n-1)。

已知入棧順序的n個元素求合理的出棧序列有多少種

8樓:heart阿飛

答案:2n!/((n+1)n!

n!) 設bn表示n個元素出棧序列的種數,顯然b1=1, b2=2,如下2種: 1,2 2,1 b3=5,如下5種:

1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 一般地bn=2n!/((n+1)n!n!

),並滿足遞推關係 bn= b0*bn-1+ b0*bn-1+…+ bn-1*b0,其中b0=1

「有n個元素依次進棧,則出棧序列有(n-1)/2種」對嗎

9樓:匿名使用者

明顯不對嘛,n=2時,假設這兩個數為1,2,則出棧序列可為12(1進1出,2進2出)或21(1進2進2出1出)應該是[1/(n+1)]*(2n)!/(n!*n!)

10樓:居曼嵐禹雄

不對這要用到排列組合,假設有n個數入棧,則出棧序列個數為從2n個數中任選n個數進行排列組合,然後再乘以1/(n+1)就得到了。由於排列組合的公式在這裡不好表示,所以只好用化簡後的公式表示,公式如下:

[1/(n+1)]*[2n*(2n-1)*(2n-2)/n*(n-1)*(n-2)]=[2n*(2n-1)*(2n-2)]/[(n+1)*n*(n-1)*(n-2)]

n個元素進棧,有幾種出棧方式

11樓:硪丨曖戀

我們把n個元素的出棧個數的記為f(n), 那麼對於1,2,3, 我們很容易得出:

f(1) = 1     //即 1

f(2) = 2    //即 12、21

f(3) = 5     //即 123、132、213、321、231

然後我們來考慮f(4), 我們給4個元素編號為a,b,c,d, 那麼考慮:元素a只可能出現在1號位置,2號位置,3號位置和4號位置(很容易理解,一共就4個位置,比如abcd,元素a就在1號位置)。

分析:1) 如果元素a在1號位置,那麼只可能a進棧,馬上出棧,此時還剩元素b、c、d等待操作,就是子問題f(3);

2) 如果元素a在2號位置,那麼一定有一個元素比a先出棧,即有f(1)種可能順序(只能是b),還剩c、d,即f(2),     根據乘法原理,一共的順序個數為f(1) * f(2);

3) 如果元素a在3號位置,那麼一定有兩個元素比1先出棧,即有f(2)種可能順序(只能是b、c),還剩d,即f(1),

根據乘法原理,一共的順序個數為f(2) * f(1);

4) 如果元素a在4號位置,那麼一定是a先進棧,最後出棧,那麼元素b、c、d的出棧順序即是此小問題的解,即         f(3);

結合所有情況,即f(4) = f(3) + f(2) * f(1) + f(1) * f(2) + f(3);

為了規整化,我們定義f(0) = 1;於是f(4)可以重新寫為:

f(4) = f(0)*f(3) + f(1)*f(2) + f(2) * f(1) + f(3)*f(0)

然後我們推廣到n,推廣思路和n=4時完全一樣,於是我們可以得到:

f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(n-1)*f(0)即

n個元素順序入棧,出棧順序有多少種

設順序表l中有n個資料元素,則刪除該表中第i個元素需要移動()個元素

在一個長度為n的順序表中,刪除第i 1 i n 個元素時,需要移動的元素個數為n i。分析 在一個長度為n的順序表中,刪除一個元素時,有n個位置可供選擇。需要改變從第 i 1個元素起到第n個元素的儲存位置,即進行 從第i 1到第n個元素往前移動一個位置 共需移動n i個元素。擴充套件資料向已有順序表...

從n種不同的元素中選出m個元素合為「組」,一共可以合成多少種不同的「組」

有重複的組合 從n種不同的元素中選出m個元素合為一個 組 一共可以合成不同的 組 n m 1 m n 1 n n 1 n 2 n m 1 m 例如 從3種不同的元素a,b,c中選出2個元素合為一個組,aa,bb,cc,ab,ac,bc 一共可以合成 3 2 1 3 2 1 2 6 例如 從2種不同的...

c語言程式設計有N個整數,使其前面各數順序向後移動M個位置,最

大野瘦子 錯誤一修改 printf d a i 錯誤二修改 void move int a,int n,int m int t n int i,j 0 for i n m it j a i for i 0 ia i m a i for i 0 ia i t i 注意事項 呼叫自定義後移函式move ...