理解背包问题中M(i,C)=max(M(i−1,C),v(i)+M(i−1,C−w(i)))

首先,M(i,C)中i,C表示:当前考虑从1到i号选择物品放入,C是假设背包的当前最大容量;同样的M(i-1,C)中i-1,C表示:考虑从1到i-1号选择物品放入,C是假设背包的当前最大容量,而M(i-1,C)的值表示从1到i-1号选择物品放入的最好情况。
然后看v(i)+M(i−1,C−w(i))),M(i−1,C−w(i))其实是考虑给第i个物品留出空间的情况的最优值,所以v(i)+M(i−1,C−w(i)))表示放入第i个物品后的值。
举个例子,直观理解:
id: 1 2 3
 v: 1 4 3
 w: 1 2 2
 背包容量C:3
 制表:
 					C	1  	   2 	   3
 i=1 1					1      1       1
 i=2 1,2				1      4       5
 i=3 1,2,3             1      4       5

现在看M(3,3)的情况:
M(3,3)=Max[M(2,3),v(3)+M(2,1)]
其中M(2,3)=5 > v(3)+M(2,1) = 4
所以M(3,3)=5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值