卡塔兰数是组合数学中一个常在各类计数问题中出现的数列。以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名。历史上,清朝数学家明安图(1692年-1763年)在其《割圜密率捷法》中最早发明这种计数方式,远远早于卡塔兰。有中国学者建议将此数命名为“明安图数”或“明安图-卡塔兰数”。python
卡塔兰数的通常项公式为app
前20项的卡塔兰数为:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190,spa
def numTrees(self, n): catelan_num = [-1,1,1] def catelan(n): result = 0 for i in range(1,n): result += catelan_num[i]*catelan_num[n-i] return result for i in range(3,n+1): catelan_num.append(catelan(i)) return catelan_num[n]
卡特兰数还有那些应用呢?code
1.括号化 ()() || (()) 这样子滴blog
2.出栈次序(above)rem
3.凸多边形三角划分数学
4.给定结点组成二叉搜索树it
5.n对括号正确匹配次数class
试一下用这个公式去作吧!搜索