火车进出栈问题(Catalan数)
Posted tedukuri
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了火车进出栈问题(Catalan数)相关的知识,希望对你有一定的参考价值。
火车进出栈问题即:
一个栈(无穷大)的进栈序列为 1,2,3,4,...,n 求有多少个不同的出栈序列?
将问题进行抽象, 假设‘+‘代表进栈, 则有‘-‘代表出栈
那么如果进栈序列为123, 则:
+ + + - - - 将1, 2, 3压入栈后再将3, 2, 1弹出 得到出栈序列为321
同样, + - + - + - 得到出栈序列为123
上面所述的均为合法进出栈的序列 可发现规律: 序列中 + 的个数等于 - 的个数
但是如 + - - + + - 这样的序列, 在栈为空时仍进行弹出操作的, 为非法序列
进一步将 + - 序列抽象到平面直角坐标系中, + 代表向右走一格, -代表向上走一格, 可知y = x直线下方的序列均为合法序列, 如下图所示
到此, 火车进出栈问题已经转化为单调路径的问题
推导出公式:
即得出栈序列的总数
以上是关于火车进出栈问题(Catalan数)的主要内容,如果未能解决你的问题,请参考以下文章