題目鏈結
小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是c(2n,n),現在小兔又想如果不穿越對角線(但可接觸對角線上的格點),這樣的路徑數有多少?小兔想了很長時間都沒想出來,現在想請你幫助小兔解決這個問題,對於你來說應該不難吧!
每次輸入乙個數n(1<=n<=35),當n等於-1時結束輸入。
對於每個輸入資料輸出路徑數,具體格式看sample。13
12-1
1 1 2
2 3 10
3 12 416024
卡特蘭數的遞推式:
#include
#include
#include
#include
#include
using
namespace std;
intmain()
; f[0]
=1,f[1]=
1;for(
int i=
2;i<=
35;i++)}
int cnt=
1,n;
while
(cin>>n)
printf
("%d %d %i64d\n"
,cnt++
,n,f[n]*2
);}return0;
}
通過題意可以得到遞推公式:
dp[i][i] = dp[i-1][j] (i=j)
dp[i][j] = dp[i-1][j] + dp[i][j-1] (i!=j)
#include
#include
#include
#include
#include
using
namespace std;
intmain()
else}}
while
(cin>>n&&n!=-1
)return0;
}
組合數學 卡特蘭數
我們以一道題為例來介紹卡特蘭數 給定n n 個0 0 和n n個1 1,它們將按照某種順序排成長度為2 n 2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0 0的個數都不少於1 1的個數的序列有多少個。輸出的答案對109 7 109 7取模。109 7 為了便於解決,我們可以把這個問...
組合數學 卡特蘭數總結
卡特蘭數 問題 n對括號有多少種合法的匹配方式?卡特蘭數的常見應用之一 結論 對於n對括號,合法的排列共有c n,2n c n 1,2n 基本思路 考慮n對括號,有n個 和n個 對於任意乙個 其前面必定有乙個 跟他對應,如果沒有則是非法序列。也就是說,對於 其前面的 的數量必須大於等於 的數量。假設...
神奇的組合數學 卡特蘭數
定義 令h 0 1 h 1 1 catalan數滿足遞推式。h n h 0 h n 1 h 1 h n 2 h n 1 h 0 n 2 通項公式 證明如下 摘自taocp的原練習題 數競黨很少用不嚴格證明的定理 1.括號對 合法的括號對對數答案為h n 2.二叉樹 合法的樹有答案為h n 3.分多邊...