首页 > 其他 > 详细

UVa514 Rails (栈)

时间:2019-02-14 14:52:06      阅读:199      评论:0      收藏:0      [点我收藏+]

题意:一列有n节车厢的火车按顺序进站,给你一个出站顺序,问你该火车的车厢能否以该顺序出站?

分析:出站的车厢满足后进先出的关系,所以我们考虑采用栈s

假设车厢一共有n节,n = 5;

进站顺序A:1 2 3 4 5

出站顺序B/target: 2 3 4 5 1

如果进站的车厢没有立马出站,则将该车厢入栈s.push(A++)

判断栈里面车厢的顺序是否和出站顺序一致 s.top()==  target[B] 

 

#include<cstdio>
#include<stack>
using namespace std;
int main()
{
    int n,target[1005];
    stack<int>s;
    while(~scanf("%d",&n)&&n)
    {
        while(1){
        int flag = 0;
        for(int i=1;i<=n;i++)
            {
                scanf("%d",&target[i]);
                if(target[i] == 0)
                {
                    flag = -1;
                    break;
                }
            }
        if(flag == -1)
        {
            printf("\n");
            break;
        }
        int A=1,B=1;
        while(B <= n)
        {
            if(A == target[B]){A++;B++;}
            else if(!s.empty()&&s.top()==target[B]){B++;s.pop();}
            else if(A <= n) s.push(A++);
            else {flag =-1; break;}
        }
        if(flag == -1)
            printf("No\n");
        else
            printf("Yes\n");
        }
    }
    return 0;
}

 

UVa514 Rails (栈)

原文:https://www.cnblogs.com/LLLAIH/p/10374331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!