【动态规划】01背包问题

发布时间 2023-11-18 20:36:45作者: -星-星-

问题描述:

  有物品A,B,C,D,每个物品大小和价值不相同,还有一个容量为8的背包,如何选择其中的物品放入背包,使得背包总价值最大。

  

定义dp[ i ][ j ]:  前 i 件商品,放入容量为 j 的背包所获得的最大价值。

物品的两种状态:放入和不放入。

思想:最后一步的决策问题,第 i 件物品放不放。

dp[ i ][ j ] =  max(  dp[ i-1 ][ j ] ,   ————    第 i 件物品不放入背包(前 i-1 件物品放入容量为 j 的背包的最大价值与 前 i 件是一样的)

         dp[ i-1 ][ j - w[ i-1 ] ] + v[ i -1]  ————   第 i 件物品放入背包(前 i-1 件物品放入背包为 j 减去物品 i 的重量 的背包里,再加上 i 的价值,这就是前 i 件物品放入背包的最大价值)) 

这里的w[ i-1 ]与v[ i-1 ]指的是第 i 件物品的重量与价值,因为重量与价值的数组从0开始存储,所以第一件物品对于下标为1的元素。