Rail Uva514

思路:N辆火车循环N次    每次对应次序进栈 如果和目标B相同则出栈  注意需要while出栈 因为一个出栈后

可能原来不符合要求没有出栈的元素也符合要求了,如果循环N次后 栈中还有元素没有出去则不满足题意,

否则既可以以对应序列出栈


#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[1001];
    stack<int>s;
    int n;
    while(cin>>n&&n){
            int flag=0;
        for(;;){
        for(int i=1;i<=n;i++){
            cin>>a[i];
            if(a[i]==0){flag=1;break;}
        }
        if(flag)break;
        int A=1,B=1;
        while(B<=n){
                s.push(B++);
            while(!s.empty()&&a[A]==s.top()){
                   // 和目标相同出栈 同时标注目标的A++指向下一个目标 注意要while 一个出栈后,原来在栈里面的也可能满足目标 

                A++;
                s.pop();
            }

        }
        if(s.empty()){
            printf("Yes\n");
        }
        else printf("No\n");
       while(!s.empty())s.pop();

    }
    cout<<endl;
}

return 0;
}

猜你喜欢

转载自blog.csdn.net/bug___maker/article/details/80200413