explain the reason for reverse traversal

This commit is contained in:
Hayden-Chang
2022-05-08 14:20:09 +08:00
committed by GitHub
parent e2c9a4154a
commit 9b6a447674

View File

@ -136,6 +136,7 @@ dp[1] = dp[1 - weight[0]] + value[0] = 15
不可以!
因为一维dp的写法背包容量一定是要倒序遍历原因上面已经讲了如果遍历背包容量放在上一层那么每个dp[j]就只会放入一个物品,即:背包里只放入了一个物品。
倒叙遍历的原因是,本质上还是一个对二维数组的遍历,并且右下角的值依赖上一层左上角的值,因此需要保证左边的值仍然是上一层的,从右向左覆盖。
这里如果读不懂就在回想一下dp[j]的定义或者就把两个for循环顺序颠倒一下试试