母函式方法是用模擬多項式的辦法來解決排列組合問題。
例如多項式(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...