链接:https://vjudge.net/problem/HDU-2602#author=0
题意:
给你一个背包,n个物品,每个物品的价值和体积。
求能放进背包的最大价值。
思路:
01背包。
代码:
#include <iostream> #include <memory.h> #include <vector> #include <map> #include <algorithm> #include <cstdio> #include <math.h> using namespace std; typedef long long LL; const int MAXN = 1e3 + 10; int dp[MAXN]; int a[MAXN]; int b[MAXN]; int main() { int t; int n, v; scanf("%d", &t); while (t--) { memset(dp, 0, sizeof(dp)); scanf("%d%d", &n, &v); for (int i = 1;i <= n;i++) scanf("%d", &a[i]); for (int i = 1;i <= n;i++) scanf("%d", &b[i]); for (int i = 1;i <= n;i++) { for (int j = v;j >= b[i];j--) dp[j] = max(dp[j], dp[j - b[i]] + a[i]); } printf("%d ", dp[v]); } return 0; }