#include <cstdio>
#include <iostream>
#include <stack>
using namespace std;
const int MAXN=1000+10;
int n,target[MAXN];
int main()
{
while(cin>>n&&n)
{
stack<int> s;
int A,B,ok;
while(cin>>target[1])
{
A=1;B=1;ok=1;
if (target[1] == 0) //
{ //
cout<<endl; //这几行很好的解决了输入格式问题
break; //之前是没法做到输入一个n
} //能输入多组target的
for(int i=2;i<=n;i++) scanf("%d",&target[i]); //
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++);
else
{
ok=0;
break;
}
}
printf("%s\n",ok?"Yes":"No");
}
}
return 0;
}
UVA 514 判断一列数的顺序是否能用栈而排列出
最新推荐文章于 2022-07-17 17:48:06 发布