Backpack I

2. 题目描述

已知一个背包最多能容纳物体的体积为V现有n个物品第i个物品的体积为v_ivi​ 第i个物品的重量为w_iwi​求当前背包最多能装多大重量的物品示例1

输入

复制

返回值

复制

说明

3. 思路

  1. 2D - dp: dp table: row = item的id, column =考虑第i个物品后(可以选也可以不选) 剩下volume, dp[i][j] = 在考虑第i个物品 时剩下volume = j情况的的最大重量

  2. 遍历 n items 和 遍历 V volume values, start from j=V and end at j=0

  3. 当j < item的volume, 那么就不用考虑第i个item,于是dp[i][j] = dp[i-1][j] 从上个item的最大值延伸到现在第i个item的状态

  4. 如果j > item的volume, dp[i][j] = max(在第i-1个item的volume=j的情况不加第i个item的最大值,以及在dp[i-1][j-v] +w 上一个item的加上当前第i个item的最大值 )

  5. Time: O(n^2) Space: O(n^2)

  6. Example

4. Coding

Last updated

Was this helpful?