题目链接:http://poj.org/problem?id=1363
题意就是有1-n的编号的车要进站,问能不能按输入的方式出站,能的话输出Yes,否则输出No。
思路就是用栈模拟,看一下代码就能理解了,就是输入输出有点麻烦...
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
int n;
int pre[1005];
int flag;
int main()
{
while(~scanf("%d",&n) && n){
if(flag == 1)printf("\n");
flag = 0;
while(~scanf("%d",&pre[1]) && pre[1]){
for(int i=2;i<=n;i++){
scanf("%d",&pre[i]);
}
int num = 1;
stack<int> s;
for(int i=1;i<=n;i++){
s.push(i);
while(!s.empty() && s.top() == pre[num]){
num++;
s.pop();
}
}
if(s.empty())printf("Yes\n");
else{
printf("No\n");
}
}
flag = 1;
}
return 0;
}