有
n 個物品,第
i個物品有 nu
mi個,求選出
m 個物品組成排列的方案數。
如果不是組成排列,就是經典的普通型母函式。我們發現無法用普通型母函式表示出「組成排列」這個條件,實際上這是經典的指數型母函式(摘自這裡)。
口袋中有白球2個,紅球
3 個,黃球
1個,任取
3 個作為乙個排列,總共有多少種排列?
類似地用指數型母函式解決:用 (1
+x1!
+x22
!)表示取白球
0 個,
1個或者
2 個那麼 (1
+x1!
+x22
!)(1
+x1!
+x22
!+x3
3!)(
1+x1
!)來表示所有的排列結果。=1
+3x1
!+8x
22!+
19x33
!+38x
44!+
60x55
!+60x
66!
找到次數為
3 的那一項,係數為
19,那麼總共有
19 種排列。
這道題就按照上面那麼做就行了。
#include
using
namespace
std;
typedef
double db;
const
int maxn=10;
int n,m,num[maxn+5],fac[maxn+5];db a[maxn+5],b[maxn+5];
int main()
printf("%.0f\n",a[m]*fac[m]);
}return
0;}
HDU 1521排列組合 指數型母函式
題目鏈結 題目 有n種物品,並且知道每種物品的數量。要求從中選出m件物品的排列數。例如有兩種物品a,b,並且數量都是1,從中選2件物品,則排列有 ab ba 兩種。input 每組輸入資料有兩行,第一行是二個數n,m 1 m,n 10 表示物品數,第二行有n個數,分別表示這n件物品的數量。outpu...
hdu 1521 排列組合 指數型母函式
高中知識,求全排列組合後,去重方法是除以相同物品的數量階乘。那麼如果我們再構造母函式的時候,就把階乘作為每一項的分母,那求出來就可以直接乘上全排列係數了。hdu4333 created by teddywang on 16 3 9.include include include include de...
hdu 1521 排列組合 指數型生成函式
題目 標準的指數型生成函式 wa了好幾遍,原來是多組資料啊囧 注意精度,直接強制轉換 int 是捨去小數,會wa,0.5再強制轉換或輸出 0lf 是四捨五入,能a。如下 include include include include using namespace std typedef doubl...