组合数学之母函数

//老版母函数
//首先用c1,c2两个数组,c1[j]表示j块钱有c1[j]中表达方式
//c1[0]=1,c2 0
//关键for循环
for (int i = 0; i < n; ++i)//该循环是指每*种*货币一个个的放进去,共n种
{
	for (int j = 0; j <= p; ++j)//这里是c1数组的循环,c1的数组界p
	{
		for (int k = 0; k <= num[i] && k*price[i] + j <= x; ++k)//将第i种货币放k张进去,该种货币最多num[i]个,price[i]表示该货币的价值
		{
			c2[j + k*price[i]] = c1[j];//更新j+k*price[i]的表示方式的个数并且保存在c2中
		}
		
	}
	for (int j = 0; j <= p; ++j)//一种货币放完,开始放下一种货币之前要“初始化”
	{
		c1[j] = c2[j];
		c2[j] = 0;
	}
}
//指数型母函数
//与老版母函数类似
//同样c1,c2两个数组,并且是同样的含义,c1[j]表示j快钱有c1[j]中表达方式
//同样的初始化c1[0]=1;表示0块钱必有一种表达方式
//关键for循环
for (int i = 0; i < n; ++i)//将每种货币放入,货币共n种
{
	for (int j = 0; j <= p; ++j)//与老版相同c1数组,界限为p
	{
		for (k = 0; k <= num
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值