Advertisement

PTA天梯赛-L2-1 判定和分析出栈序列合法性

阅读量:

假设有一个最大容量为M的堆栈结构,并将N个数字依次推入该堆栈(按照1到N的顺序),允许以任意顺序弹出元素,则哪些数字序列是不可能生成的?举例来说,在M=5且N=7的情况下,则按照连续递增的方式压入元素(1→2→3→4→5→6→7),随后弹出操作能够生成序列{1,… ,7};然而像{3,… ,4}这样的序列则无法被生成。

输入部分将包含以下内容:

  • 第一行将提供三个关键参数:M(表示堆栈的最大容量)、N(表示待入栈元素的数量)以及K(表示待检查的有效出栈序列数量)
  • 接下来的K行将详细列出所有待检查的有效出栈序列
    每一组参数均以空格分隔

对于每一行的出栈序列来说,在确定该序列确实可能是一个合法的出栈序列后,请在一行中输出"YES";否则就输出"NO"

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

输出样例:

这道题的核心算法思路是指导我们具体实现栈的数据结构。因此,在解决这个问题时

复制代码
    #include<iostream>
    #include<stack>
    #include<queue>
    using namespace std;
    int main()
    { int M,N,K,i,t;

全部评论 (0)

还没有任何评论哟~