Rails
列车问题,十分经典的对栈运用的题目
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
using namespace std;
stack<int> s;
int main()
{
int n;
int target[2200];
while(~scanf("%d",&n))
{
if(n == 0)
return 0;
while(~scanf("%d",&target[1]))
{
if(target[1] == 0)
{
cout<<endl;
break;
}
for(int i = 2; i <= n; i++)
scanf("%d",&target[i]);
int a,b;
a = b = 1;
bool mark = true;
while(b <= n)
{
if(a == target[b])
{
a++;
b++;
}
else if(!s.empty() && s.top() == target[b])
{
s.pop();
b++;
}
else if(a <= n)
{
s.push(a);
a++;
}
else
{
mark = false;
break;
}
}
if(mark == true) printf("Yes\n");
else printf("No\n");
}
}
}

浙公网安备 33010602011771号