背包·滚动优化

10 分钟

注意 dp[i] 只用到 dp[i-1],可以只用一维数组 dp[j]。01 背包要让内层容量从大到小枚举,保证每个物品只被用一次:for(int i=1;i<=n;i++) for(int j=W;j>=w[i];j--) dp[j]=max(dp[j], dp[j-w[i]]+v[i]);

小纸条

如果内层改成从小到大,会出现什么错误?

登录 后可看答案

背包·滚动优化 · 算法进阶 · op599 课程