母函数简单实现
转自: Preeee 1.以一个问题为引例:重量为1,3,5g的砝码各两个,可以称出多少种重量不同的物品? 构造母函数G(x)=(1+x+x^2)(1+x^3+x^6)(1+x^5+x^10),其中x的指数表示砝码的重量,x表示砝码。 每个括号里代表的状态是取0个、取1个、取2个。 得到的各个x^n前面的系数就是每种质量可以称出的方案数目。所得式子的个数就代表可以称出多少种的重量。 2.再看另一种情况:重量为1,3,5g的砝码,可以称出某种质量的方案数目是多少? 构造母函数G1(X)=(1+x+x^2+x^3+......)(1+x^3+x^6+x^9+......)(1+x^5+x^10+x^15+......) 若质量为n,则x^n前面的系数就是方案数目。 以一个题为例:1、2、3、4.....元的面值可以组成面值为n的方案数有多少? 超级详细代码加思想: #include <iostream> using namespace std; const int _max = 10001; // c1是保存各项质量砝码可以组合的数目 // c2是中间量,保存没一次的情况 int c1[_max], c2[_max]; int main() { int nNum; //你想用已有的面值组成nNum大小的面值 int i, j, k; //该代码的前提是假设所有面值为1、2、3、4、5元