这里相比0 - 1背包,不同的是每种物品的个数上升到无限个,让你找到最优的拿法。
对于上面这个图片,在这里大家看不懂的可能是倒数第2行怎么到倒数第一行的。
对此,大家只需要看看dp[i + 1][j]的定义就可以了
dp[i + 1][j] = max{dp[i - k * w[i]] + k * v[i] | k >= 0};
= max{dp[i][j - k * w[i]] + k * v[i] | k >= 0};
dp[i + 1][j - w[i]] = max{dp[i][j - w[i] - k * w[i]] + k * v[i] | k >= 0}