判断不可能的出栈序列
来源:互联网 发布:小智用什么软件刷点卷 编辑:程序博客网 时间:2024/05/23 01:13
对于在出栈序列中任意元素,其之后值小于该元素的元素必须是降序排列,否则序列不可能。
原因剖析如下:
1.所有元素都是从小到大顺序进栈, 所以栈顶元素一定比栈中的其他元素(如果有的话)大;
2.根据"后进先出"的原则, 在出栈序列中, 曾经同一时刻存在于栈的元素, 值最大的栈顶元素会排在其他元素的前面;
3.栈中的每一个元素都有机会成为栈顶元素;
综合以上三点, 就是一个类似于降序的选择排序过程(每次都挑选最大的元素放在最前面), 使得曾经同一时刻存在于栈的元素按照降序排列, 即每一个元素后值比该元素小的元素都呈降序排列)
另注: 对于任一个元素后面的值比该元素大的元素, 它们既可以是升序(进栈后立即出栈), 也可以是降序(进栈后都等待比它更大的元素进栈) , 因此不能作为判断依据.
栈序列
出栈序列(输出序列)
栈顶
栈底
先
后
1
1
2
1
32
1
432
1
5432
1
432
15
32
154
2
1543
15432
阅读全文
0 0
- 判断不可能的出栈序列
- 不可能的出栈序列--思想
- 不可能的出栈顺序
- 一个栈的入栈序列为ABCDEF,则不可能的出栈序列是
- 出栈序列的判断,以及栈混洗。
- 给定入栈序列,判断可能的出栈序列
- 判断序列是否为正确的出栈序列
- 判断合法出栈序列
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 给出一个入栈序列和一个出栈序列,判断出栈序列是否是入栈序列对应的出栈序列
- 判断一个序列的出栈次序是否合法
- 判断是否是合法的出栈序列
- 判断给定序列是否是对应入栈序列的出栈序列(C++)
- 判断某序列是否为另一个序列的出栈序列 C++实现
- 如何判断一个序列是否为另一个序列的出栈序列
- Bootstrap深度解析
- hdu 1800 Flying to the Mars 暴力解决
- 自动化提取关键字
- ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法
- 【局部图像描述子】Harris角点检测器
- 判断不可能的出栈序列
- poj 1014
- codeforces 363B Fence
- MySQL新建用户、授权操作
- HDU 1175 连连看(DFS)
- spring security use-expressions详解
- 民谣不穷!
- 【Java8】Java8体验(二)Stream语法详解
- Mac OS命令