“倒叙” -> “倒序”

This commit is contained in:
bqlin
2021-12-19 18:58:57 +08:00
parent 6144420c39
commit 1104815b18
10 changed files with 14 additions and 15 deletions

View File

@@ -103,7 +103,7 @@ for(int i = 0; i < weight.size(); i++) { // 遍历物品
为什么呢?
**倒遍历是为了保证物品i只被放入一次**。但如果一旦正序遍历了那么物品0就会被重复加入多次
**倒遍历是为了保证物品i只被放入一次**。但如果一旦正序遍历了那么物品0就会被重复加入多次
举一个例子物品0的重量weight[0] = 1价值value[0] = 15
@@ -115,9 +115,9 @@ dp[2] = dp[2 - weight[0]] + value[0] = 30
此时dp[2]就已经是30了意味着物品0被放入了两次所以不能正序遍历。
为什么倒遍历,就可以保证物品只放入一次呢?
为什么倒遍历,就可以保证物品只放入一次呢?
就是先算dp[2]
就是先算dp[2]
dp[2] = dp[2 - weight[0]] + value[0] = 15 dp数组已经都初始化为0
@@ -125,7 +125,7 @@ dp[1] = dp[1 - weight[0]] + value[0] = 15
所以从后往前循环,每次取得状态不会和之前取得状态重合,这样每种物品就只取一次了。
**那么问题又来了为什么二维dp数组历的时候不用倒呢?**
**那么问题又来了为什么二维dp数组历的时候不用倒呢?**
因为对于二维dpdp[i][j]都是通过上一层即dp[i - 1][j]计算而来本层的dp[i][j]并不会被覆盖!