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 }选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员