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 }    

posted on 2012-08-03 07:58  mycapple  阅读(269)  评论(0)    收藏  举报

导航