資料結構實驗之棧與佇列七 出棧序列判定

2021-08-17 09:54:35 字數 1263 閱讀 4999

time limit: 30 ms

memory limit: 1000 kib

submit

statistic

discuss

problem description

給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。

例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個出棧序列,但4,3,5,1,2就不可能是該序列的出棧序列。假設壓入棧的所有數字均不相等。

input

第一行輸入整數n(1<=n<=10000),表示序列的長度。

第二行輸入n個整數,表示棧的壓入順序。

第三行輸入整數t(1<=t<=10)。

後面依次輸入t行,每行n個整數,表示要判斷的每乙個出棧序列。

output

對應每個測試案例輸出一行,如果由初始入棧序列可以得到該出棧序列,則輸出yes,否則輸出no。

sample input

5

1 2 3 4 5

24 5 3 2 1

4 3 5 1 2

sample output

yes

no

hint

source

此題並不難,只是簡單的棧的操作,

給定乙個壓棧順序,判斷是否能根據特定序列彈出;

我的思路:

把入棧與出棧序列分別存乙個陣列;

根據如棧順序依次壓入棧中,沒必要一次全部壓入;

注意一下什麼時候壓入,什麼時候出棧,什麼是候結束;

最後判斷一下棧中是否為空來決定輸出;

(由於我很low,所以如果有錯無大佬多包含^-^);

ac**:

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int  main()

{stackp;

int i,j,n,m,t,b,c[11000],d[11000],x,y;

char a[1100];

while(scanf("%d",&n)!=eof)

{for(i=0; i**或許有點low,大佬們自行簡化吧.

資料結構實驗之棧與佇列七 出棧序列判定

problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對...

資料結構實驗之棧與佇列七 出棧序列判定

time limit 30ms memory limit 1000kb submit statistic problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所...

資料結構實驗之棧與佇列七 出棧序列判定

資料結構實驗之棧與佇列七 出棧序列判定 problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順...