问题:
n个数从小到大依次进栈,给出一个出栈次序,判断该出栈次序是否存在。
例如:
1,2,3,4,5依次进栈
给定出栈顺序为4,3,1,2,5,判断该次序是否存在。
代码:
#include<stdio.h>
int main()
{
int n,flag=0,s=0;
scanf("%d",&n);
int num[n],stack[n];
for(int i=0; i<n; i++)
{
scanf("%d",&num[i]);
stack[i]=0;
}
for(int i=0; i<5; i++)
{
if(s==0)
{
for(int j=0; j<num[i]-1; j++)
{
stack[j]=j+1;
s++;
}
continue;
}
if(num[i]>stack[s-1])
continue;
else if(num[i]==stack[s-1])
{
stack[s-1]=0;
s--;
}
else
flag=1;
}
if(flag==0)
printf("Yes");
if(flag==1)
printf("N0");
return 0;
}