進棧順序1,2,3,4,出棧順序多少種

2021-05-21 15:29:28 字數 880 閱讀 1812

1樓:匿名使用者

4312嗎? 肯定不能4 3 1 2了. 假設第一個是 4 出棧, 那麼就說明前面 進棧順序只能是 1,2,3 那麼出棧順序使能是 4,3,2,1了.6423

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

2樓:悽清的小白鼠

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

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而出)

3樓:憑實陀雪

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元素順序入棧,則可能的出棧序列有多少

我來補充吧,其實進棧出棧是可以同時進行的,並不一定要全部進去再出來,可以先進一部分再出來,所以關鍵是從那個開始先出 1.第一個先出的為d 則必須為dcba 2.第一個出來的是c則可為 cdba abc依次進然後c出來d進去再出來然後ba出來 也可為cbad cb出來d進 出,a出 也可為cbda 就...

設計棧類實現初始化棧入棧出棧判棧空

include using namespace std typedef char elemtype typedef class linknode delete p int listack stacklength listack s return i int listack stackempty li...

關於資料結構進棧和出棧的問題望賜教(就剩20分了,您別嫌少)

和 這種操作符!放在變數的前面為 如i 1 等式 i 2 4 是先計算這個值,再執行等式的!而 i 2 3 是先計算等式,之後再計算i的值,等式計算後i的值才是 2 進棧 s elem s top 程式內部會這樣分為兩步執行 s elem s top s top s top 1 出棧 s elem ...