先引入一个问题:
有2n个人进入剧场,入场费为5元,已知2n个人中有n个人持有5元钞票,n个人持有10元钞票,且剧院起初没有任何钞票,问有多少种方法使得只要有持有10元钞票的人买票,一定就有5元钞票找零?
分析:
这个问题不难想到用组合数学来解决,从题意可知持有10元钞票的人来买票,他前面必须有至少一个持有5元钞票的人来买票才能找零,因此这个问题可以抽象为括号匹配问题,持有5元钞票的人为左括号,持有10元钞票的人为右括号,问有多少种括号匹配方式。将最终解设为f(2n),可知左括号和右括号之间一定是偶数个括号才有可能使得括号一一匹配,奇数个至少会多出来一个括号无法匹配,因此考虑一对匹配括号左右两边f(2n)=f(0)*f(2n-2)+f(2)*f(2n-4)+...+f(n-2)*f(0),可以得出一种递推方式
卡特兰数列是组合数学中一个常出现在各种计数问题中出现的数列,其前几项为 :1、1、2、5、14、42、132、429....出现这几种数的时候优先想到是否是卡特兰数
卡特兰数递推公式:
1.
2.
组合公式:
1.
2.
或
生成函数: