例如01背包的dp[i][d] = max(dp[i-1][d], dp[i-1][d-wi]+vi)
只用到了i和i-1,所以直接去掉i变成dp[d].max(dp[d], dp[d-wi] + vi)
- 然后d变成逆向,
d = [D,0] = [D,wi]
- 计算第i行的cur的时候需要用到在i-1行的kala
- 因此kala应该先被读取,再被写入
再例如如果是像这样的完全背包,那么kala应该先被写入再被读取
例如01背包的dp[i][d] = max(dp[i-1][d], dp[i-1][d-wi]+vi)
只用到了i和i-1,所以直接去掉i变成dp[d].max(dp[d], dp[d-wi] + vi)
d = [D,0] = [D,wi]