母函数

母函数是一个很神奇的东西。
详细请看某位大牛的文章,模板挺好的
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值