Uva514

Posted zuiaimiusi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva514相关的知识,希望对你有一定的参考价值。

https://vjudge.net/problem/UVA-514

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int MAXN=1010;
 4 int target[MAXN];
 5 int main()
 6 {
 7     int n,f;
 8     while(scanf("%d",&n)&&n)
 9     {
10         while(1){
11         f=1;
12         stack<int>s;
13         int A=1,B=1;
14         for(int i=1;i<=n;i++)
15          {
16          cin>>target[i];
17          if(target[1]==0)
18          {
19              cout<<endl;
20              f=0;
21              break;
22          }
23          }
24          if(f==0)break;
25         int ok=1;
26         while(B<=n)
27         {
28             if(target[B]==A)
29                 A++,B++;
30             else if(!s.empty()&&s.top()==target[B])
31             {
32                 s.pop();
33                 B++;
34             }
35             else if(A<=n)
36                 s.push(A++);
37             else
38             {
39                 ok=0;
40                 break;
41             }
42         }
43         printf("%s
",ok?"Yes":"No");
44         }
45     }
46     return 0;
47 }

 

1)栈的应用

用A来代表车厢序号,B代表target数组用来表示列车出站的序号顺序。B用来表示已经驶进B的车辆数。用stack<int>s表示C。

1.A中首元素==B首元素,A直接驶入B;

2.A中首元素!=B首元素,栈首元素==B首元素,栈中首元素出栈;

3.A中首元素!=B首元素,栈首元素!=B首元素,A中元素个数>0,A中元素进入栈;

4.A中首元素!=B首元素,栈首元素!=B首元素,A中元素个数<=0,该解不成立。

2)输入输出的形式奇特,需要多加注意。

 

以上是关于Uva514的主要内容,如果未能解决你的问题,请参考以下文章

铁轨(UVa 514)

UVA514铁轨

UVa514 Rails

UVA 514

Uva514

Rails,uva 514