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;
}

posted on 2011-10-03 20:15 purplest 阅读(566) 评论(0)  编辑 收藏 引用 所属分类: others


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论