HDU 2602 (简单的01背包) Bone Collector

很标准的01背包问题

 1 //#define LOCAL
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6 
 7 const int maxn = 1000 + 10;
 8 int w[maxn], v[maxn], dp[maxn];
 9 
10 int main(void)
11 {
12     #ifdef LOCAL
13         freopen("2602in.txt", "r", stdin);
14     #endif
15 
16     int T;
17     scanf("%d", &T);
18     while(T--)
19     {
20         int n, V;
21         scanf("%d%d", &n, &V);
22         for(int i = 0; i < n; ++i)
23             scanf("%d", &w[i]);
24         for(int i = 0; i < n; ++i)
25             scanf("%d", &v[i]);
26         memset(dp, 0, sizeof(dp));
27         for(int i = 0; i < n; ++i)
28             for(int j = V; j >= v[i]; --j)
29                 dp[j] = max(dp[j], dp[j-v[i]] + w[i]);
30         printf("%d
", dp[V]);
31     }
32     return 0;
33 }
代码君
原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3924243.html