卡特蘭數
首先,我們設f(n)=序列個數為n的出棧序列種數。同時,我們假定,從開始到棧第一次出到空為止,這段過程中第乙個出棧的序數是k。特別地,如果棧直到整個過程結束時才空,則k=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)
該遞推關係的解為:h(n) = c(2n,n)/(n+1),n=0,1,2,3,... (其中c(2n,n)表示2n個物品中取n個的組合數)
問題描述
盛況空前的足球賽即將舉行。球賽門票售票處排起了球迷購票長龍。
按售票處規定,每位購票者限購一張門票,且每張票售價為50元。在排成長龍的球迷中有n個人手持面值50元的錢幣,另有n個人手持面值100元的錢幣。假設售票處在開始售票時沒有零錢。試問這2n個球迷有多少種排隊方式可使售票處不致出現找不出錢的尷尬局面。
例如當n=2是,用a表示手持50元面值的球迷,用b表示手持100元錢的球迷。則最多可以得到以下兩組不同的排隊方式,使售票員不至於找不出錢。
第一種:a a b b
第二種:a b a b
問題解決
這一類的問題有很多,但最終都脫離不了乙個問題:
棧的進出先後順序
很明顯,在棧裡,是只有先進了才能出,類似於..左右括號匹配問題(?)
雖然暴搜是可以解決資料範圍比較小的問題,但是如果資料大了就需要一些公式...
公式公式一
遞迴公式
h(0)=h(1)=1
h(n)= h(0)h(n-1)+h(1)h(n-2) + … + h(n-1)*h(0) (n>=2)
如果我們用這個公式顯然我們要使用遞迴演算法,那麼資料一大就在時空上很麻煩
公式二遞推公式
h(n)=h(n-1)(4n-2)/(n+1)
這個公式應用遞推,看上起十分和善
但對大資料呢?
我們注意到大資料的時候h(n)會很大,這時候題目一般會讓你對某素數取模(當然你可以打高精度(劃掉))
但你在取模過程中難保乙個h(n)%mod=0
那麼根據公式下面所有的數都會等於0.
公式三組合數公式1
h(n)=c(2n,n)/(n+1) (n=0,1,2,…)
卡特蘭數可以與組合數聯絡起來,得到上面的公式
而組合數就是乙個楊輝三角,可以遞推得到(這個不屬於這道題的討論範圍我假裝你們都會(逃))
但我們發現對於大資料你要取模,而對於除法你是沒辦法用膜的性質的(當然你可以應用逆元(劃掉)),所以造成了麻煩
公式四組合數公式2
h(n)=c(2n,n)-c(2n,n-1) (n=0,1,2,…)
與組合數公式1不同這個是兩個組合數的減法
減法是可以用膜的性質的.
ov.
Catalan Number 卡特蘭數
其前幾項為 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790,477638700,1767263190,6564120420,24466267020,9148256...
Catalan Number 卡特蘭數
卡特蘭數是乙個比較有意思的數列,有幾個經典問題的模型如下 1.n對括號的合法表示式有多少種可能,其中答案為c n 表示卡特蘭數列的第n項 2.有n個節點的二叉樹的所有可能形態有多少種,也是c n 3.計算有n 1個葉節點的滿二叉樹有多少種,也是c n 4.序列的所有排列中不出現 123 或者任何乙個...
卡特蘭數(catalan number)
卡塔蘭數是組合數學中乙個常在各種計數問題中出現的數列。公式為 前幾項為 n 0,1,2,3,4,5時 1,1,2,5,14,42 2.1 乙個棧的進棧次序為1 2 3 n。有多少種不同的出棧次序?當 2.2 有n個結點,總共能構成幾種不同的二叉樹?當 2.3 其它常見問題 1.n對括號有多少種匹配方...