Backpack I
Last updated
Last updated
已知一个背包最多能容纳物体的体积为V现有n个物品第i个物品的体积为v_ivi 第i个物品的重量为w_iwi求当前背包最多能装多大重量的物品示例1
复制
复制
2D - dp: dp table: row = item的id, column =考虑第i个物品后(可以选也可以不选) 剩下volume, dp[i][j] = 在考虑第i个物品 时剩下volume = j情况的的最大重量
遍历 n items 和 遍历 V volume values, start from j=V and end at j=0
当j < item的volume, 那么就不用考虑第i个item,于是dp[i][j] = dp[i-1][j] 从上个item的最大值延伸到现在第i个item的状态
如果j > item的volume, dp[i][j] = max(在第i-1个item的volume=j的情况不加第i个item的最大值,以及在dp[i-1][j-v] +w 上一个item的加上当前第i个item的最大值 )
Time: O(n^2) Space: O(n^2)
Example