Q80039 - C++编程预备组选择题39
统计题目( 单选题 )
以下代码是背包问题的一个解决程序,每个物品只可以选择一次,输出结果是什么?
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int val[] = {60, 100, 120};
int wt[] = {10, 20, 30};
int W = 50;
int n = sizeof(val)/sizeof(val[0]);
int dp[n+1][W+1];
for(int i = 0; i <= n; i++) {
for(int w = 0; w <= W; w++) {
if(i == 0 || w == 0)
dp[i][w] = 0;
else if(wt[i-1] <= w)
dp[i][w]=max(val[i-1]+dp[i-1][w-wt[i-1]], dp[i-1][w]);
else
dp[i][w] = dp[i-1][w];
}
}
cout << dp[n][W] << endl;
return 0;
}

关注我们