0-1 背包问题描述:
给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?
注:不能选择装入某物品的一部分,也不能装入同一物品多次
思路分析:
1
对于第i个物品i,两种状态:
- 1拿,背包容量减少wi,价值增加vi
- 2不拿,背包容量不变,价值不变,继续考虑第i-1个物品
V[ i , j ] 表示 在面对第 i 件物品,且背包容量为 j 时所能获得的最大价值
2
V[ i , j ]的计算方式分两种情况:
-
(1)j < w[i] ,这时候背包容量不足以放下第 i 件物品,只能选择不拿,继续考虑第i-1件物品,此时:
V[ i , j ] = V[ i-1, j ] -
(2)j>=w[i] ,这时背包容量可以放下第 i 件物品,我们可以考虑拿或者不拿,分析怎样价值更大:
---- 1拿,V[ i , j ]=V[ i-1 , j-w[ i ] ] + v[ i ]