在解决简单背包问题时,动态规划的状态转移方程如下:
dp[i][w] = max(dp[i-1][w], dp[i-1][w - weights[i-1]] + values[i-1]);该方程表示:在考虑第 $i$ 个物品时,当前背包容量为 $w$,如果不放物品 $i$,则最大价值是 $dp[i-1][w]$;如果放入物品 $i$,则最大价值是 $dp[i-1][w - weights[i-1]] + values[i-1]$,其中数组 weights 和 values 分别表示所有物品的重量和价值,数组下标从 0 开始。
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】动态规划|数组下标|基本算术运算
本题考查 GESP 六级《动态规划》模块的核心内容。命题人放这道题,就是卡住考生对0/1 背包状态转移的理解——六级考生最容易在这里栽跟头:要么把下标搞错,要么把"不放"和"放"的情形混淆。