栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

pop sequence 弹出序列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pop sequence 弹出序列

给定一个最多能存 M 个数字的栈,将 1∼N 按顺序压入栈中,过程中可随机弹出栈顶元素。

当 N 个数字都经历过入栈和出栈后,我们按照元素出栈的顺序,可以得到一个弹出序列。

现在给定一系列 1∼N 的随机排列序列,请你判断哪些序列可能是该栈的弹出序列。

例如,当 N=7,M=5 时,1, 2, 3, 4, 5, 6, 7可能是该栈的弹出序列,而 3, 2, 1, 7, 5, 6, 4 不可能是该栈的弹出序列。

输入格式
第一行包含三个整数 M,N,K,分别表示栈的容量,数字个数,需要判断的序列个数。

接下来 K 行,每行包含一个 1∼N 的排列。

输出格式
对于每个序列,如果可能是该栈的弹出序列,则输出一行 YES,否则输出一行 NO。

数据范围
1≤M,N,K≤1000
输入样例:
5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2
输出样例:
YES
NO
NO
YES
NO

#include 

using namespace std;
int n,k,m;
int main()
{
    ios::sync_with_stdio(false);
    cin >> m >>n >>k;
    while(k--)
    {
        stack s;
        int val = 1;
        bool flag=true;
        for(int i=1;i<=n;i++)
        {
            int x;
            cin >> x;
            while(s.size()=val)
            {
                s.push(val);
                val++;
            }
            if(s.top()==x)
            s.pop();
            else
            flag=false;
        
        }
       
        if(flag)
        cout <<"YES"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号