poj 1363 Rails

poj 1363 Rails

用栈模拟过,不过不是朴素的模拟,这方法在lrj的白书上看到的,比我们组队时想到的方法好的多了,而且才30+行。。。
#include  < stdio.h >

const   int  N =   1010 ;

int  n, stack[N], data[N];

int  main()
{
    
while  ( scanf( " %d " & n), n )
    {
        
while  ( scanf( " %d " , data), data[ 0 ] )
        {
            
int  i, m =   1 , k =   0 , top =   0 ;
            
for  ( i  =   1  ; i  <  n ; i ++  )
                scanf(
" %d " , data + i);
            
bool  flag =   true ;
            
while  ( k  <  n )
            {
                
if  ( m  ==  data[k] )
                {
                    m
++ ;
                    k
++ ;
                }
                
else   if  ( top  &&  stack[top]  ==  data[k] )
                {
                    top
-- ;
                    k
++ ;
                }
                
else   if  ( m  <  n )
                    stack[
++ top]  =  m ++ ;
                
else
                {
                    flag
=   false ;
                    
break ;
                }
            }
            printf(
" %s\n " , flag ? " Yes " : " No " );
        }
        putchar(
10 );
    }
    
return   0 ;
}

你可能感兴趣的:(poj 1363 Rails)