问题:
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;
 }
  









