简介
卡特兰数又称卡塔尔数,是组合数学中一个常出现在各种计数问题中的数列。其前几项为: 1, 2, 5, 14, 42, 132, 429, …
朴素递推公式
快速计算公式
- 递推公式2: h ( n ) = h ( n − 1 ) ∗ ( 4 ∗ n − 2 ) n + 1 \frac{h(n) = h(n-1) * (4*n-2)}{n+1} n+1h(n)=h(n−1)∗(4∗n−2)
- 组合公式1: C 2 n n n + 1 \frac{C^n_{2n}}{n+1} n+1C2nn
- 组合公式2: C 2 n n − C 2 n n − 1 C^n_{2n}-C^{n-1}_{2n} C2nn−C2nn−1
应用
栈进出问题
二叉树结点问题
括号序列问题
括号化问题:一个合法的表达式由 ( ) () ()包围, ( ) () ()可以嵌套和连接,如: ( ( ) ) ( ) (())() (())()也是合法表达式,现给出 n n n对括号,求可以组成的合法表达式的个数;
假设当前要计算的是第 k k k个 ( ( (;
其左边有 k − 1 k-1 k−1个 ( ( (,右边有 n − k n-k n−k个 ( ( (;
那么一共有 h ( k − 1 ) ∗ h ( n − k ) h(k-1)*h(n-k) h(k−1)∗h(n−k)种匹配方案;
因为 k k k是可以任取的,因此就得到了卡特兰数列的递推公式,即下图