链接: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\n", dp[v]);
}
return 0;
}