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 }
相关文章: