CSP-J 入门级 · CSP 2026 入门级第一轮 第 4 题

选择题 · 答案 C · 考点:栈(stack)、线性结构、枚举法

← 整套速查表 CSP-J 入门级 全部真题

题目

【单选】初始时栈为空,将 1、2、3、4 依次入栈,入栈过程中允许随时出栈。下列出栈序列中不可能出现的是( )。

答案:C

考点

栈(stack) 讲解 →栈(stack) 真题汇总 →线性结构枚举法 讲解 →枚举法 真题汇总 →

解题思维

出入栈序列可以看成"堆栈筛":某个数要先出栈,就必须先把它压进去;一旦它出栈,比它晚压入的数只能压在它上面。

常见错误

只检查"3 在 1 前面出现"这类表面特征,而没有真正模拟压栈顺序;也容易忽略"入栈过程中允许随时出栈"意味着可以边压边弹。

详细解析(节选)

解析

本题考查栈的后进先出(LIFO)性质。判断某个出栈序列是否可行,最可靠的办法是"模拟 + 反证"。

合法性的判定法则

入栈顺序固定为 1,2,3,4。出栈序列合法的充要条件是:序列中不存在这样的三元组 i<j<k,使得出栈值满足 v_k < v_i < v_j(即"大、小、更小"的交叉模式)。直观理解:若 a 先于 b 出栈且 a<b,那么 b 出栈时 a 已在栈中且位于 b 下方……等价地,常见判定法是"每个元素之后出现的比它小的元素必须是降序"。

逐项验证

答案 C。

拓展

如果一个出栈序列中,某个较小的数 x 出现在较大的数 y 之后(x<y 且 x 后于 y 出栈),那么所有 (x, y) 之间的数必须以递减顺序出现在 x 之前——这就是常说的"Catalan 序列"判别法。n 个元素的合法出栈序列总数为卡特兰数 C_n = (2n)! / (n!(n+1)!),本题 n=4 时共 14 种。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断