母函数是一个很神奇的东西。
详细请看某位大牛的文章,模板挺好的
http://blog.csdn.net/xiaofei_it/article/details/17042651
模板:
K对应具体问题中物品的种类数。
P对应具体问题的最大指数(通常是问题的最大解)
v[i]表示该乘积表达式第i个因子的权重,对应于具体问题的每个物品的价值或者权重。(有时v[i]可以省略)
n1[i]表示该乘积表达式第i个因子的起始系数,对应于具体问题中的每个物品的最少个数,即最少要取多少个。(n1[i]通常是0)
n2[i]表示该乘积表达式第i个因子的终止系数,对应于具体问题中的每个物品的最多个数,即最多要取多少个。(n2[i]为无穷大时通常省略)
看具体问题确定K,P,v[i],n1[i]以及n2[i];
//a为计算结果,b为中间结果。
int a[MAX],b[MAX];
//初始化a
memset(a,0,sizeof(a));
a[0]=1;
for (int i=1;i<=K;i++)//循环每个因子
{
memset(b,0,sizeof(b));
for (int j=n1[i];j<=n2[i]&&j*v[i]<=P;j++)//循环每个因子的每一项
for (int k=0;k+j*v[i]<=P;k++)//循环a的每个项
b[k+j*v[i]]+=a[k];//把结果加到对应位
memcpy(a,b,sizeof(b));//b赋值给a
}
//最终结果通常为a[P]
下面 给出本人用这个模板做出的几道题:
http://blog.csdn.net/rcy_zhu/article/details/75041124
http://blog.csdn.net/rcy_zhu/article/details/75041172
http://blog.csdn.net/rcy_zhu/article/details/75041208