[poj] 1363 Rails

来源:互联网 发布:成都中立数据 编辑:程序博客网 时间:2024/05/01 18:08
[poj] 1363 Rails

【题目】http://poj.org/problem?id=1363

【题意】判断是否能通过栈将顺序列转化为相应队列

【算法】栈模拟

【题解】将未进栈的元素直接输出,之前的元素进栈;判断进栈的元素是不是栈顶,若在栈顶则出栈,反之该队列无法得到。

【注意】标记进栈元素所在栈的位置和元素是否进栈。

注意输出格式

【测试】

【代码】

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[10000];int main(){    int N,i,x,j,k,t;    while(scanf("%d",&N)&&N!=0){        while(scanf("%d",&x)&&x!=0){            for(i=1;i<=N;i++)a[i]=-1;            a[x]=-2;            k=0;            for(j=1;j<x;j++){                if(a[j]==-1){                    a[j]=k;                    k++;                }            }            t=1;            for(i=1;i<N;i++){                scanf("%d",&x);                if(t==1){                    if(a[x]==-1){                        a[x]=-2;                        for(j=1;j<x;j++){                            if(a[j]==-1){                                a[j]=k;                                k++;                            }                        }                    }                    else if(a[x]==k-1)k--;                    else t=0;                }            }        if(t==1)printf("Yes\n");        else printf("No\n");        }        putchar('\n');    }    return 0;}


 

原创粉丝点击