题目链接:http://poj.org/problem?id=1363
题目大意:就是给你n个数(1~n),从1开始入栈,然后给你一个序列,问能否按这个序列出栈
思路,就是直接模拟计算判断。。。。
code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
using namespace std;
int a[1010];
int b[1010];
int main()
{
int n,i,j;
while(scanf("%d",&n)==1&&n)
{
while(scanf("%d",&a[0]))
{
if(a[0]==0) break;
stack<int> Q;
while(!Q.empty()) Q.pop();
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
}
j=1;
int s,flag=0;
for(i=0;i<n;i++)
{
while(j<=a[i])
{
Q.push(j);
j++;
}
s=Q.top();
Q.pop();
if(s!=a[i])
{
flag=1;
break;
}
}
if(flag==0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
printf("\n");
}
return 0;
}
原文:http://blog.csdn.net/u010304217/article/details/39482261