题库首页 › 青少年软件编程(C语言) › 题目 15143

出栈序列的合法性 给定一个最大容量为 m 的堆栈,将 n 个数字按 1, 2, 3, ..., n 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 m=5、n=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。 时间限制:1000 内存限制:65536 输入 输入第一行给出 3 个不超过 1000 的正整数:m(堆栈最大容量)、n(入栈元素个数)、k(待检查的出栈序列个数)。最后 k 行,每行给出 n 个数字的出栈序列。所有同行数字以空格间隔。 输出 对每一行出栈序列,如果其的确是有可能得到的合法序列,就在一行中输出 `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 样例输出 YES NO NO YES NO

正确答案:参考程序(Python):m,n,k=map(int,input().split());for _ in range(k):seq=list(map(int,input().split()));st=[];cur=1;ok=True;for x in seq:while cur<=n and (not st or st[-1]!=x):st.append(cur);cur+=1;if len(st)>m:ok=False;break;if st and st[-1]==x:st.pop() else:ok

试卷来源:202503 青少年等级考试C/C++真题六级

本卷相关题目

在线做题 同科目题库