在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i]。
样例
如果有4个物品[2, 3, 5, 7]
如果背包的大小为11,可以选择[2, 3, 5]装入背包,最多可以装满10的空间。
如果背包的大小为12,可以选择[2, 3, 7]装入背包,最多可以装满12的空间。
函数需要返回最多能装满的空间大小。
注意
你不可以将物品进行切割。
举例:
如果有4个物品[2, 3, 5, 7],如果背包的大小为11。问最多能装多满?
建动态规划数组 dp[A.length][m + 1],A.length行,m+1列
| start | j = 0 | j = 1 | j = 2 | j = 3 | j = 4 | j = 5 | j = 6 | j = 7 | j = 8 | j = 9 | j = 10 | j = 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| i = 0 (A[0]=2) | dp[0][0] = 0 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| i = 1 (A[1]=3) | 0 | 0 | 2 | 3 | 3 | 5 | 5 | 5 |

本文介绍了如何使用动态规划解决背包问题。在给定n个物品和背包大小m的情况下,确定如何选择物品以最大化背包的填充程度。通过建立dp数组,利用状态转移方程求解,例如dp[i][j]表示前i个物品在容量为j的背包中能装满的最大空间。文章通过样例解释了算法的工作原理,并给出了具体的状态转移方程。
最低0.47元/天 解锁文章
395

被折叠的 条评论
为什么被折叠?



