1 //STL 栈的基础题,其中target[i]代表序列中第i个车厢的编号,根据先进后出到规则写出下列代码
2
3 #include <cstdio>
4 #include <stack>
5 using namespace std;
6 const int MAXN=1000+10;
7
8 int n,target[MAXN];
9
10 int main()
11 {
12 while(scanf("%d",&n)==1)
13 {
14 stack<int> s;
15 int A=1,B=1;
16 for(int i=1;i<=n;i++)
17 scanf("%d",&target[i]);
18 int ok=1;
19 while(B<=n)
20 {
21 if(A==target[B])
22 {
23 A++;
24 B++;
25 }
26 else if(!s.empty() && s.top()==target[B])
27 {
28 s.pop();
29 B++;
30 }
31 else if(A<=n)
32 {
33 s.push(A++);
34 }
35 else
36 {
37 ok=0;
38 break;
39 }
40 }
41 printf("%s\n",ok?"Yes":"No");
42 }
43 return 0;
44 }