参考下述文章
讲的很好,但是在01背包优化方面不太好理解
这里就讲的很细,把为什么从大到小遍历j 和 为什么只遍历到w[i]讲明白了。
总结一下:因为每一个dp[j]存储的都是i-1轮 的dp[j] ,所以其实就是 dp[i-1][j]; 从大到小是因为会更新第i轮 的 d[j-w[i]]使得变成 d[i][j-w[i]] 从而丢失 d[i-1][j-w[i]] ; 为什么只遍历到 w[i] ,因为小于的部分 相当于不装到包里,因此不更新,不需要额外操作。
参考下述文章
讲的很好,但是在01背包优化方面不太好理解
这里就讲的很细,把为什么从大到小遍历j 和 为什么只遍历到w[i]讲明白了。
总结一下:因为每一个dp[j]存储的都是i-1轮 的dp[j] ,所以其实就是 dp[i-1][j]; 从大到小是因为会更新第i轮 的 d[j-w[i]]使得变成 d[i][j-w[i]] 从而丢失 d[i-1][j-w[i]] ; 为什么只遍历到 w[i] ,因为小于的部分 相当于不装到包里,因此不更新,不需要额外操作。