UVA 514 判断一列数的顺序是否能用栈而排列出

来源:互联网 发布:php工程师 广州 编辑:程序博客网 时间:2024/06/05 01:12
#include <cstdio>#include <iostream>#include <stack>using namespace std;const int MAXN=1000+10;int n,target[MAXN];int main(){    while(cin>>n&&n)    {        stack<int> s;        int A,B,ok;        while(cin>>target[1])        {            A=1;B=1;ok=1;            if (target[1] == 0)                             //                 {                                               //                cout<<endl;                                 //这几行很好的解决了输入格式问题                break;                                      //之前是没法做到输入一个n            }                                               //能输入多组target的            for(int i=2;i<=n;i++) scanf("%d",&target[i]);   //            while(B<=n)            {                if(A==target[B])                {                    A++;                    B++;                }                else if(!s.empty()&&s.top()==target[B])                 {                    s.pop();                    B++;                }                else if(A<=n) s.push(A++);                else                 {                    ok=0;                    break;                }            }            printf("%s\n",ok?"Yes":"No");        }    }    return 0;}
原创粉丝点击