问题描述
有 n 列编号为 1 到 n 的列车以堆栈结构进出车站,如下图所示。有多少种可能的“流行”序列?
例如,n=5 列车的可能路径序列是,1 次进入,1 次离开,2 次进入,2 次离开,3 次进入,3 次离开,...,导致 12345 作为可能的弹出序列。
如果 n=6,是否可能出现以下序列:
- 435612
- 325641
- 154623
- 135426
解决方法
对于 n 个列车,可行序列的数量是第 n 个 Catalan number。
我们被迫推第一班火车。当我们弹出第一列火车时,我们已经在下一列火车的 0 和 n-1 之间进行了推送和弹出。然后我们推动并弹出剩余的火车。这导致重复 T(0) = 1; T(n) = T(i) T(n-1−i) 的从 0 到 n−1 的 i 的总和,这是加泰罗尼亚递归。