zoukankan      html  css  js  c++  java
  • UVa514 Rails (栈)

    题意:一列有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("
    ");
                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
    ");
            else
                printf("Yes
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    亲和数
    改革春风吹满地
    处理选中图片
    项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器)
    iOS应用启动main函数
    LaunchScreen&LaunchImage
    颜色常识
    折半查找法(二分法)
    冒泡排序
    多用户登录
  • 原文地址:https://www.cnblogs.com/LLLAIH/p/10374331.html
Copyright © 2011-2022 走看看