下面代码实现 0/1 背包的一维动态规划(第 i 个物品重量 wt[i]、价值 val[i],容量 W)。横线处应填写( )。
int knapsack(int W, vector<int>& wt, vector<int>& val) {
int n = wt.size();
vector<int> dp(W + 1, 0);
for (int i = 0; i < n; ++i) {
for (int w = W; w >= wt[i]; --w) {
________________________
}
}
return dp[W];
}
- A. dp[w] = max(dp[w], dp[w - wt[i]] + val[i]);
- B. dp[w] = max(dp[w - 1], dp[w - wt[i]] + val[i]);
- C. dp[w] = dp[w] + val[i];
- D. dp[w - wt[i]] = max(dp[w], val[i]);
正确答案:A