而後包含N行數據,每行包含26個<=20的整數x1,x2,.....x26.
php
2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 2 6 2 10 2 2 5 6 1 0 2 7 0 2 2 7 5 10 6 10 2 10 6 1 9
7 379297
知識點:數組
母函數(生成函數): 函數
生成函數有普通型生成函數和指數型生成函數兩種(本題是普通型)。post
形式上,普通型母函數用於解決多重集的組合問題,spa
指數型母函數用於解決多重集的排列問題。設計
母函數還可以解決遞歸數列的通項問題(好比使用母函數解決斐波那契數列,Catalan數的通項公式)。blog
普通母函數:遞歸
構造母函數G(x), G(x) = a0 + a1*x + a2* + a3*
+....+ an*
。 則稱G(x)是數列a0,a1…an的母函數。ip
一般普通母函數用來解多重集的組合問題,其思想就是構造一個函數來解決這個問題。通常步驟例如如下:
1.創建模型:物品n種,每種數量分別爲k1,k2,..kn個,每種物品又有一個屬性值p1,p2,…pn,(如本題的字母價值),
求屬性值和爲m的物品組合方法數。
(若數量ki無窮 也成立。即相應如下式子中第ki項的指數一直到無窮)
2.構造母函數:G(x)=(1++
…
)(1+
+
+…
)…(1+
+
+…
) (一)
=a0 + a1*x + a2* + a3*
+....+ akk*
(設kk=k1·p1+k2·p2+…kn·pn) (二)
G(x)含義: ak 爲屬性值和爲k的組合方法數。
母函數利用的思想:
1.把組合問題的加法法則和冪級數的乘冪相應起來。
2.把離散數列和冪級數相應起來。把離散數列間的相互結合關係相應成爲冪級數間的運算關係,最後由冪級數形式來
肯定離散數列的構造。
代碼實現:
求G(x)時一項一項累乘。先令G=1=(1+0*x+0*+…0*
),再令G=G*(1+
+
…
)獲得形式(二)的式子…最後令G=G*(1+
+
+…
)。
題解:
1.建模:物品(字母)26種,每種數量x1,x2…x26。屬性值爲1,2,3..26,求屬性值和<=50的組合方法數。