铁轨问题(栈到初步学习)

 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 }
View Code

 

posted on 2013-07-08 00:33  Forgiving  阅读(199)  评论(0编辑  收藏  举报