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
51 2 3 4 5
24 5 3 2 1
4 3 5 1 2
output
yesno
思路:首先建立乙個棧,將輸入的資料儲存在陣列中,乙個乙個的進棧,然後每乙個進棧的時候都與目標序列元素相比較,當二者相等的時候,出棧,然後繼續獲取棧頂元素餘下乙個序列元素相比較,相等就接著比較下乙個,如果不相等就繼續入棧操作,當入棧操作結束後。判斷
#include
using
namespace std;
#define intsize 10010
#define addsize 10010
typedef
int elemtype;
typedef
struct
sqstack;
intinitstack
(sqstack &s)
intpush
(sqstack &s, elemtype x)
*s.top++
= x;
return0;
}elemtype top
(sqstack &s)
elemtype pop
(sqstack &s)
intemptystack
(sqstack &s)
intmain()
scanf
("%d"
,&t)
;while
(t--)}
if(emptystack
(s)==1)
printf
("yes\n");
else
printf
("no\n");
}return0;
}
資料結構實驗之棧與佇列七 出棧序列判定
problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對...
資料結構實驗之棧與佇列七 出棧序列判定
time limit 30ms memory limit 1000kb submit statistic problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所...
資料結構實驗之棧與佇列七 出棧序列判定
time limit 30 ms memory limit 1000 kib submit statistic discuss problem description 給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,...