zoukankan      html  css  js  c++  java
  • POJ 1363 Rails

    题目POJ 1363

    题意

    1-n顺序入栈,判断出栈顺序是否合法

    思路

    用栈和队列,模拟入栈出栈操作
    1. 将元素顺序压入栈中

    2. 每压入一个数字,判断是否和队列的头元素相等,若相等,就在栈和队列中弹出这两个元素

    3. 直到两元素不相同

    4. 如果最后栈不为空,说明不是合法序列

    输入

    5//序列元素个数
    1 2 3 4 5//出栈顺序
    5 4 1 2 3//出栈顺序
    0//5个数的序列判断结束
    6//序列元素个数
    6 5 4 3 2 1//出栈顺序
    0//6个数的序列判断结束
    0//输入结束
    

    代码实现

    #include <iostream>
    #include<cstdio>
    #include<stack>
    #include<queue>
    //判断出栈顺序是否正确
    int check_is_valid_order(std::queue<int>&order);
    int main()
    {
        int n;
        int train;
        scanf("%d",&n);
        while(n)
        {
            scanf("%d",&train);
            while(train)
            {
                std::queue<int>order;
                order.push(train);
                for(int i=1;i<n;i++)
                {
                    scanf("%d",&train);
                    order.push(train);
                }
                if(check_is_valid_order(order))
                {
                    printf("Yes
    ");
                }
                else
                    printf("No
    ");
                scanf("%d",&train);
            }
            putchar('
    ');
            scanf("%d",&n );
        }
        return 0;
    }
    int check_is_valid_order(std::queue<int>&order)
    {
        std::stack<int>S;
        int n=order.size();//1-n顺序入栈
        for(int i=1;i<=n;i++)
        {
            S.push(i);
            while(!S.empty()&&S.top()==order.front())
            {
                S.pop();
                order.pop();
            }
        }
        if(S.empty())
            return 1;
        else
            return 0;
    }
    
  • 相关阅读:
    python
    shader example
    shader 关键字
    Android Studio如何导出可供Unity使用的aar插件详解 转
    adb
    知识
    Unity实现模拟按键
    小知识
    图种制作命令
    八卦
  • 原文地址:https://www.cnblogs.com/Hfolsvh/p/13909906.html
Copyright © 2011-2022 走看看