卡塔蘭數是組合數學中一個常在各類計數問題中出現的數列。以比利時的數學家歐仁·查理·卡特蘭(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
試一下用這個公式去作吧!搜索