码迷,mamicode.com
首页 > 其他好文 > 详细

栈_uva514

时间:2018-02-05 12:42:24      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:直接   没有   std   style   str   判断   []   post   name   

题干略。

分析,从A开往C的车一定是按顺序的:1,2,3....,用A表示A站开往B站的车的编号,定义栈C储存C站的车辆编号,车厢进B站的顺序输入后存在数组B[],S为当前是第几节车厢要进B站,初始S=1。

A从1~n判断,若A==B[S],直接进B站,S++,A++;

                       第一条没有满足时:若C栈不空,判断栈顶与B[S]是否相等,相等的话S++,弹出栈顶元素;

                       前两条都没有满足时:在A站车厢没有全部进B站时,A++,C.push(A);

                       前三条均不满足时:说明A站已空,但是,C栈栈顶元素仍不能进入B站,则该测试样例不能实现。

代码:

#include <iostream>
#include <stack>
using namespace std;

const int maxn=1000+10;

stack <int> c; 

int main(){

    int a,b[maxn],s,ok,n;
L1:    while(scanf("%d",&n),n){
L:        cin>>b[1];
        if(b[1]==0) {
        cout<<endl;goto L1;}
        for(int i=2;i<=n;i++){
            cin>>b[i];
        }
        a=ok=s=1;
        while(s<=n){
            if(a==b[s]){ a++;s++;
            }
            else if(!c.empty() && c.top()==b[s]){ s++;c.pop();
            }
            else if(a<=n) { c.push(a++); 
            }
            else { ok=0;break;
            }
        }
        printf("%s\n",ok?"Yes":"No");
        goto L;
    }
    return 0;
}

 

栈_uva514

标签:直接   没有   std   style   str   判断   []   post   name   

原文地址:https://www.cnblogs.com/ucandoit/p/8416674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!