程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 卡特蘭數

卡特蘭數

編輯:關於C語言

1、卡特蘭數

卡特蘭通過解決凸n邊形的剖分得到了數列Cn

凸n+2邊形用其n-1條對角線把此凸n+2邊形分割為互不重疊的三角形,這種分法的總數為Cn

為紀念卡特蘭,人們使用“卡特蘭數”來命名這一數列。

據說有幾十種看上去毫不相干的組合計數問題的最終表達式都是卡特蘭數的形式。

卡特蘭數在數學競賽、信息學競賽、組合數學、計算機編程等都會有其不同側面的介紹。

前幾個卡特蘭數:規定C0=1,而

C1=1,C2=2,C3=5,C4=14,C5=42,

C6=132,C7=429,C8=1430,C9=4862,C10=16796,

C11=58786,C12=208012,C13=742900,C14=2674440,C15=9694845。

遞推公式


2、有意思的應用

飯後,姐姐洗碗,妹妹把姐姐洗過的碗一個一個放進碗櫥摞成一摞。一共有n個不同的碗,洗前也是摞成一摞的,也許因為小妹貪玩而使碗拿進碗櫥不及時,姐姐則把洗過的碗摞在旁邊,問:小妹摞起的碗有多少種可能的方式?

答:得數是第n個卡特蘭數Cn


3、poj 1095

要構造出一顆編號為n的二叉樹,只需要知道左子樹和右子樹的編號,就可以進行遞歸構造:
     1> 計算出編號為n的二叉樹有幾個節點:將n依次減去h[1],h[2],……,h[i],直到不能減為止,則此二叉樹共有(i+1)個節點,除去根節點,則左右子樹共有i個節點.
     2> 計算左右子樹各有幾個節點:將n依次減去h[1]*h[i-1],h[2]*h[i-2],……,h[j]*h[i-j],直到不能減為止,則左子樹有(j+1)個節點,右子樹有i-(j+1)個節點.
     3> 計算左右子樹的編號:計算左子樹是具有(j+1)個節點的二叉樹中的第x棵,右子樹是具有i-(j+1)個節點的二叉樹中的第y棵,將n整除h[i-(j+1)],商即為x,余數即為y.




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved