问题描述
大盗潜入博物馆,面前有5件宝物,分别有重量和价值,大盜的背包仅能负重20公
斤,请问如何选择宝物,总价值最高?
物品 | 重量 | 价值 |
---|---|---|
1 | 2 | 3 |
2 | 3 | 4 |
3 | 4 | 8 |
4 | 5 | 8 |
5 | 9 | 10 |
动态规划解法
明确问题以后,我们需要建立动态规划表格
m[(i, w)]:
其中 i i i 是装物品的数量 ( 0 ≤ i ≤ 5 0\le i\le 5 0≤i≤5 )
, w w w 是物品的载重 ( 0 ≤ w ≤ 20 0\le w\le 20 0≤w≤20 )
m m m 则是这些物品的总价值, 也即是我们需要存入的值。
如何填写动态规划表格呢?
1.i=0(即没有拿宝物)和w=0(最大载重为20)这两种情况下,总价值都为0
2.用循环对每次拿宝物数量和最大载重值进行查找填表
- 当本次i下物品的重量>当前最大载重时,m的值就等于第i-1次总重为w的价值。
- 否则返回 装或者不装该次物品这两种情况下的最大值
算 法 公 式 如 下 : \color {red} {算法公式如下:} 算法公式如下:
m ( i , W ) = { 0 if i = 0 0 if W = 0 m ( i −