排列組合問題 母函式

2021-07-04 23:10:18 字數 759 閱讀 1354

母函式方法是用模擬多項式的辦法來解決排列組合問題。

例如多項式(1+x+x^2)(1+x^3)(1+x^4+x^8+x^12)可用來表示2個1(kg),1個3(kg),3個4(kg)的貨物的排列組合。x^y前的係數即為組成y(kg)的方案數。

可以看到每個括號中的式子x的指數都是成比例增長,意為選擇的此重量的個數,式子中的1均可看成x^0。例如(x^0+x^4+x^8+x^12)分別表示選擇0,1,2,3個重量為4(kg)的貨物。

模擬多項式乘法時,我們先將第1個括號和第2個括號的內容相乘,得到新式子。再與第3個括號的內容相乘,又得到新式子。再與第4個括號的內容相乘,依此類推......

#include//hdu2079的**,來自網路,自己新增的注釋方便理解

int main()

,c2[41]=;

//c1用來儲存x指數冪的係數,c2用來儲存每次計算得到的指數冪,用於過渡,為中間變數

int num,val;

int i,n,k;

scanf("%d%d", &n, &k);

for(i = 1; i<=k;i++)

}else

}//更新

for(j =0;j<=n;j++)}}

//c1[n]即為n個學分的組合數

printf("%d\n", c1[n]);

}return 0;

}

上述**為有限項的情況,無限項的情況去掉t<=num這個限制條件即可。

母函式與排列組合

母函式與排列組合 在談論母函式問題之前,我們先看乙個簡單的問題描述 假如有兩組資料 a,b 和 c,d 每組中選出乙個構成乙個組合,總共有幾種選法?很顯然總共有4種選法 ac,ad,bc,bd。而且很容易聯想到這個式子 a b c d a c a d b c b d。式子中的幾個乘積項就是上面的4種...

母函式與排列組合

在談論母函式問題之前,我們先看乙個簡單的問題描述 假如有兩組資料 a,b 和 c,d 每組中選出乙個構成乙個組合,總共有幾種選法?很顯然總共有4種選法 ac,ad,bc,bd。而且很容易聯想到這個式子 a b c d a c a d b c b d。式子中的幾個乘積項就是上面的4種選法。假如把問題換...

排列組合 母函式 筆記

圓排列個數 p n,r r n r n r 例 8 人圍著餐桌吃飯,多少種就座方式?ans p 8,8 8 7 a.無限重排列 n個不同元素中取 r個按次序排列,每個元素可取無限次,總數為nr。b.有限重排列 r 個不同色彩球放入 n個標號的盒子,第 i種彩球有 ri個,總數為 p n,r r1 r...