answer
\[res = c_^n - c_^ = \fracc_^n
\]
先介紹卡特蘭數:
給出乙個n,要求乙個長度為2n的0,1序列,使得序列的任意字首中1的個數不少於0的個數證明:
考慮乙個含有n個1,n個0的2n位二進位制數字,掃瞄到第2m+1位上的時候有m+1個0和m個1,則後面0,1 的個數分別為:有n-m個1和n-m-1個0,左括號相當於1,右括號相當於0,本質上就是卡特蘭數將2m+2以及之後的0變成1,1變成0,則對應乙個n+1個0和n-1個1的二進位制數,不符合要求
從而\(c_n = c_n = c_^n - c_^ = \fracc_^n\)
我們從節點1開始考慮,要想分割成為三角形區域,節點1不能和他相鄰的節點相連,所以節點1可以連線3,4...n-1
我們假設節點1連線i,則這條線將多邊形區域分割成為i凸多邊形和n+2-i凸多邊形,即對於節點1,\(f_1(n) = f(3)*f(n+2-3) + ... + f(n-1)f(3)\)
總的分割方法是\(n*f_1(n)\),其中一半是重複情況
\[f(n) = \sum_^f(i)*f(n+2-i)*\frac
\]符合卡特蘭數
類似於拓展2
n = 0 , f(0) = 1
n = 1 , f(1) = 1
n = 2 , f(2) = 4
\[f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(i)*f(n-i-1) + ... + f(n-1) * f(0)
\]其中\(f(i)*f(n-i-1)表示左子樹有i個節點右子樹有n-i-1個節點時候可構造的數目\)
符合卡特蘭數
// 4.3 買票找零
// 卡特蘭數
class test^n - c_^ = \fracc_^n$$
*//**
先介紹卡特蘭數:
catalan 滿足遞迴式:$h(n) = h(0) * h(n-1) + h(1) * h(n-2) + ...+h(n-1) * h(0)$
catalan 另類遞推式:$h(n) = \frac$
遞推關係的解為:$c_n = c_^n - c_^ = \fracc_^n$
卡特蘭數的證明:
給出乙個n,要求乙個長度為2n的0,1序列,使得序列的任意字首中1的個數不少於0的個數
證明:考慮乙個含有n個1,n個0的2n位二進位制數字,掃瞄到第2m+1位上的時候有m+1個0和m個1,則後面0,1 的個數分別為:有n-m個1和n-m-1個0,
將2m+2以及之後的0變成1,1變成0,則對應乙個n+1個0和n-1個1的二進位制數,不符合要求
從而$c_n = c_n = c_^n - c_^ = \fracc_^n$
*//**
拓展問題:
1 矩陣連乘問題:$p = a_1 * a_2 * a_3 * ... * a_n$依據乘法結合律,不改變矩陣的相互順序,只用括號表示成對的乘積,試問有幾種括號化的方案?
左括號相當於1,右括號相當於0,本質上就是卡特蘭數
2 將多邊形劃分稱為三角形問題。求乙個凸多邊形區域劃分稱為三角形區域的方法數。
我們從節點1開始考慮,要想分割成為三角形區域,節點1不能和他相鄰的節點相連,所以節點1可以連線3,4...n-1
我們假設節點1連線i,則這條線將多邊形區域分割成為i凸多邊形和n+2-i凸多邊形,即對於節點1,$f_1(n) = f(3)*f(n+2-3) + ... + f(n-1)f(3)$
總的分割方法是$n*f_1(n)$,其中一半是重複情況
$$f(n) = \sum_^f(i)*f(n+2-i)*\frac$$
3 某乙個城市的某個居民,每一天他需要走2n個街區去上班(他在其住所北n個街區和以東n個街區工作)。如果他從不穿越從家到公司的對角線,那麼有多少條可能的道路?
符合卡特蘭數
4 在圓上選擇2n個點,將這些點成對連線起來,求使所得到的n條線段不相交的方法數?
類似於拓展2
5 n個節點可以構造出多少不同的二叉樹?
n = 0 , f(0) = 1
n = 1 , f(1) = 1
n = 2 , f(2) = 4
$$f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(i)*f(n-i-1) + ... + f(n-1) * f(0)$$
其中$f(i)*f(n-i-1)表示左子樹有i個節點右子樹有n-i-1個節點時候可構造的數目$
符合卡特蘭數*/}
}
買票找零問題
問題描述 一場激烈足球賽即將開始,售票員緊張地賣票著 每張球票50元,現在有2n 1 n 18 個球迷排隊購票,其中n個手持50元鈔票,另外n個手持100元鈔票。假設開始售票時售票處沒有零錢可以找零。問這2n個人有多少種排隊方式,不至使售票處出現找不出零的局面?例如當n 3時,共6人,3人持50元,...
動態規劃 買票找零
水題一道,但是感覺起來挺有意思的。一場激烈足球賽即將開始,售票員緊張地賣票著 每張球票50 元,現在有2n 1 n 18 個球迷排隊購票,其中 n個手持 50元鈔票,另外 n個手持 100元鈔票。假設開始售票時售票處沒有零錢可以找零。問這2n 個人有多少種排隊方式,不至使售票處出現找不出零的局面?例...
程式設計之美 買票找零
一,問題 n個拿著1元,n個人拿著2元去買票。票價一元,且售票元只能用n個人購票的一元給2元的找零。問有幾種排列方法 分析 卡特蘭數方法 遞推公式 f 2 n f 0 f 2 n 1 f 1 f 2 n 2 f 2 n 1 f 0 f n f 0 f n 1 f 1 f n 2 f n 1 f 0 ...