【數學題】卡特蘭數及其應用

簡介

卡塔蘭數是組合數學中一個常在各類計數問題中出現的數列。以比利時的數學家歐仁·查理·卡特蘭(1814–1894)命名。歷史上,清朝數學家明安圖(1692年-1763年)在其《割圜密率捷法》中最早發明這種計數方式,遠遠早於卡塔蘭。有中國學者建議將此數命名爲「明安圖數」或「明安圖-卡塔蘭數」。python

卡塔蘭數的通常項公式爲app

C_n = frac{1}{n+1}{2n choose n} = frac{(2n)!}{(n+1)!n!}

前20項的卡塔蘭數爲:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190,spa

遞推公式

image.png

python代碼求第n個卡特蘭數

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

試一下用這個公式去作吧!搜索

相關文章
相關標籤/搜索