hdu 2602 Bone Collector 01背包模板

Posted 下周LGD该赢了吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2602 Bone Collector 01背包模板相关的知识,希望对你有一定的参考价值。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602

题目要求是尽量装的最多,所以初始化的时候都为0即可。

如果要求恰好装满,初始化的时候除了dp[0] = 0,其他都要设成-inf,表示不合法情况。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int T;
 4 int dp[1010][1010];
 5 int v[1010], w[1010];
 6 int main() 
 7 {
 8  //   freopen("in.txt", "r", stdin);
 9    // freopen("out.txt", "w", stdout);
10     scanf("%d", &T);
11     while(T--)
12     {
13         int N, V;
14         scanf("%d%d", &N, &V);
15         memset(dp, 0, sizeof(dp));
16         for(int i = 1; i <= N; i++) scanf("%d", &v[i]);
17         for(int i = 1; i <= N; i++) scanf("%d", &w[i]);
18         
19         for(int i = 1; i <= N; i++)
20         {
21             for(int j = 0; j <= V; j++)
22             {
23                 if(j >= w[i]) dp[i][j] = max(dp[i-1][j-w[i]]+v[i], dp[i-1][j]);
24                 else dp[i][j] = dp[i-1][j];
25             }
26         }
27         printf("%d\n", dp[N][V]);
28         
29     }
30     return 0;
31 }

 

滚动数组:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int T;
 4 int dp[1010];
 5 int v[1010], w[1010];
 6 int main() 
 7 {
 8  //   freopen("in.txt", "r", stdin);
 9    // freopen("out.txt", "w", stdout);
10     scanf("%d", &T);
11     while(T--)
12     {
13         int N, V;
14         scanf("%d%d", &N, &V);
15         memset(dp, 0, sizeof(dp));
16         for(int i = 1; i <= N; i++) scanf("%d", &v[i]);
17         for(int i = 1; i <= N; i++) scanf("%d", &w[i]);
18         
19         for(int i = 1; i <= N; i++)
20         {
21             for(int j = V; j >= w[i]; j--)
22             {
23                 dp[j] = max(dp[j-w[i]]+v[i], dp[j]);
24             }
25         }
26         printf("%d\n", dp[V]);
27         
28     }
29     return 0;
30 }

 

以上是关于hdu 2602 Bone Collector 01背包模板的主要内容,如果未能解决你的问题,请参考以下文章

hdu2602Bone Collector ——动态规划(0/1背包问题)

hdu 2602 Bone Collector 01背包模板

HDU 2602: Bone Collector

HDU 2602 Bone Collector(01背包)

HDU 2602 Bone Collector (01背包问题)

Bone Collector HDU - 2602