poj1363 Rails
1 #include<stdio.h> 2 int main() 3 { 4 int Sq[1000],a[1000]; 5 int i,k,n,head; 6 while(~scanf("%d",&n),n){ 7 while(scanf("%d",&a[0]),a[0]){ 8 for(head=0,i=1;i<n;++i) 9 scanf("%d",&a[i]); 10 for(i=1,k=0;k<n;++k){ 11 while(i<a[k]) 12 Sq[head++]=i++; 13 if(a[k]==i) i++; 14 else if(head&&a[k]==Sq[head-1]) head--; 15 else{ 16 printf("No\n"); 17 break; 18 } 19 } 20 if(k==n) printf("Yes\n"); 21 else continue; 22 } 23 printf("\n"); 24 } 25 return 0; 26 }
用一个数组模拟栈,进行一系列匹配,一旦发现不匹配,立马跳出!!