给定 个物品和一个最大承重为 W的背包,每个物品有一个重量 wt[i]和价值 val[i],每个物品只能选择放或不放。目标是选择若干个物品放入背包,使得总价值最大,且总重量不超过W,则横线上应填写( )。

A. dp[w] = max(dp[w], dp[w] + val[i]);
B. dp[w] = dp[w - wt[i]] + val[i];
C. dp[w] = max(dp[w - 1], dp[w - wt[i]] + val[i]);
D. dp[w] = max(dp[w], dp[w - wt[i]] + val[i]);
正确答案:D
试卷来源:202509 CCF-GESP编程能力等级认证C++六级真题