测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A67890. 下列代码实现了一个0-1背包的一维动态规划代码,内层循环是经典的逆序写法。若将内层循环改成正序遍历(即 for (int j = w[i]; j <= W; j++) ),仍能得到正确答案。1 int main() {

判断题

题目描述

下列代码实现了一个0-1背包的一维动态规划代码,内层循环是经典的逆序写法。若将内层循环改成正序遍历(即 for (int j = w[i]; j <= W; j++) ),仍能得到正确答案。

1 int main() {
2  int W = 5;
3  int w[] = {2, 3, 4};
4  int v[] = {10, 1, 1};
5  int n = 3;
6  int dp[6] = {0};
7
8  for (int i = 0; i < n; i++) {
9   for (int j = W; j >= w[i]; j--) { // ← 逆序!
10    dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
11   }
12  }
13  cout << dp[W];
14 }

选项(单选)