题目大意:给出N件物品的价值和体积,现在你有一个体积为V的背包,问装载背包的最大价值是多少
解题思路:01背包裸题
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int value[N], volume[N], dp[N];
int n, m;
void init() {
scanf("%d%d" , &n, &m);
for (int i = 0; i < n; i++)
scanf("%d", &value[i]);
for (int i = 0; i < n; i++)
scanf("%d", &volume[i]);
}
void solve() {
memset(dp, 0, sizeof(dp));
for (int i = 0; i < n; i++)
for (int j = 0; j + volume[i] <= m; j++)
dp[j] = max(dp[j], dp[j + volume[i]] + value[i]);
int ans = 0;
for (int i = 0; i <= m; i++)
ans = max(ans, dp[i]);
printf("%d\n", ans);
}
int main() {
int test;
scanf("%d" ,&test);
while (test--) {
init();
solve();
}
return 0;
}