/*
* 01背包裸题
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 1001
#define MAXV 1001
int val[MAXN], vol[MAXN], dp[MAXV];
int zero_one_package(int n, int max_v)
{
memset(dp, 0, sizeof(dp));
for(int i = 0; i < n; i ++) {
for(int v = max_v; v >= vol[i]; v --) {
dp[v] = max(dp[v], dp[v-vol[i]]+val[i]);
}
}
return dp[max_v];
}
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
int n, v, cas;
scanf("%d", &cas);
while( cas -- ) {
scanf("%d %d", &n, &v);
for(int i = 0; i < n; i ++) {
scanf("%d", &val[i]);
}
for(int i = 0; i < n; i ++) {
scanf("%d", &vol[i]);
}
printf("%d\n", zero_one_package(n, v));
}
return 0;
}hdu_2602
最新推荐文章于 2018-10-07 13:12:36 发布
本文详细介绍了01背包问题的基本概念、算法实现及应用案例。通过具体代码实例,深入浅出地解释了如何使用动态规划解决背包问题。
472

被折叠的 条评论
为什么被折叠?



