乙個最多可以儲存m個數的棧;按1,2,3...順序入棧並隨機出棧
輸入乙個出棧序列,判斷給出 出棧序列是否合理
乙個棧——按序入棧
乙個數——判斷棧的大小是否超出要求
乙個flag——標誌該序列是否合理
#include
#include
using namespace std;
const
int maxn =
1010
;int sqe[maxn]
;int
main()
for(
int i =
1; i <= n; i++
)int cur_idx =1;
bool flag = true;
// 合法標誌
for(
int i =
1; i <= n; i++)if
(!st.
empty()
&& st.
top(
)== sqe[cur_idx]
)// 注意,top() 和 pop() 都需要判斷是否為空}if
(st.
empty()
&& flag == true)
else
}getchar()
;getchar()
;return0;
}
判斷出棧序列是否合法
問題描述 對於乙個棧,已知元素的進棧序列,判斷乙個由棧中所有元素組成的排列是否是可能的出棧序列。比如,進棧序列為1 2 3 4,則可能的出棧序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。輸入形式 從標準輸入讀取第一行是乙個整數n 3 n 10 代表有n個元素,其進棧序列是1 2 3...
判斷出棧序列是否合法
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 ...
poj 1363 判斷棧序列是否合法
已知從1到n的數字序列,按順序入棧,每個數字入棧後即可出棧,也可在棧中停留,等待後面的數字入棧出棧後,該數字再出棧,求該數字序列的出棧序列是否合法 比如 3 2 5 4 1 合法序列 3 1 2 4 5 不合法序列 因為1肯定比2先入棧,所以1不可能比2先出棧 思路 為了測試出棧序列是否正確,將元素...