题意是:给出n节火车,火车可任意节进车站,给出火车出站顺序,判断能否实现,实现输出YES,不能实现输出NO;
#include<stdio.h>
const int maxn=1000+10;
int n,target[maxn];//定义了target[]数组
int main()
{
while(scanf("%d",&n)==1)
{
int stack[maxn],top=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&target[i]);//输入列车驶出的顺序
}
int ok=1;
int a=1,b=1;
while(b<=n)
{
if(a==target[b])
{
a++;
b++;
}
else if(top&&stack[top]==target[b])
{
top--;
b++;
}
else if(a<=n)//top最大值是n-1
stack[++top]=a++;
else
{
ok=0;
break;
}
}
printf("%s\n",ok?"YES":"NO");
}
return 0;
}