POJ 1363 Rails

 1 #include<stdio.h>

 2 int main()

 3 {

 4     int sq[1000],a[1000];//sq为栈,a为B的出栈元素 

 5     int i,k,n,head;

 6     while(scanf("%d",&n),n)//n为0则结束 

 7     {

 8         while(scanf("%d",&a[0]),a[0])//a[0]=0的话表示本次数据结束 

 9         { 

10             head=0;

11             for(i=1;i<n;i++)

12             scanf("%d",&a[i]);//输入剩余的元素

13             for(i=1,k=0;k<n;k++)

14             {

15                 while(i<a[k])//i为1,2,3,4,5..... 

16                 sq[head++]=i++;//head始终指向栈顶的下一位

17                 if(a[k]==i) i++;//此处是和A的进栈元素比较,相等的话不进栈

18                 else if(head&&(a[k]==sq[head-1]))  head--;//这个是和栈里的栈顶元素比较,相等的话比较下一个,直到head=0

19                 else{

20                      puts("No");//栈空或者a[k]!=栈顶元素即不符合出栈情况 

21                      break;

22                     }

23             } 

24             if(k==n)  puts("Yes");

25             else continue;

26         }

27         printf("\n");//即当a[0]=0时进行下一个数据输出要空行

28     }

29     return 0;

30 }    

你可能感兴趣的:(Rails)