#include<stdio.h>
void push(int n,int a[])
{
int j=1,top=0,w[2000]= {0};//初始化
for(int i=0; i<n; i++)
{
if(w[top]!=a[i])//当栈的顶端与队列第一个不相等时
{
for(; j<=a[i]; j++)//逐步输入栈
{
top++;
w[top]=j;
}
}
if(w[top]==a[i])//判断栈的顶端是否与队列相等
top--;
}
if(top==0)
printf("Yes\n");
else
printf("No\n");
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
return 0;
else
{
for(int o=0;; o++)
{
int a[2000];
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
if(a[i]==0)
break;
}
if(a[0]==0)
{
printf("\n");
break;
}
push(n,a);
}
}
}
return 0;
}
判读队列的合法性
于 2021-12-15 22:27:48 首次发布