HDU 2602 (Bone Collector )基础 01背包

【链接】:click here~~

【思路】基础01背包,注意第一排输入的是价值,第二排是体积。。

代码:

/*  
* Problem: HDU No.2602
* Running time: 46MS  
* Complier: C++  
* Author: javaherongwei 
* Create Time: 10:14 2015/9/5 星期六
*/  

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int N=1005;
int dp[N];
int value[N],volume[N];
int n,V;
int main()
{
   int t;scanf("%d",&t);
   while(t--)
   {
       memset(dp,0,sizeof(dp));
       memset(value,0,sizeof(value));
       memset(volume,0,sizeof(volume));
       scanf("%d %d",&n,&V);
       for(int i=0; i<n; ++i) scanf("%d",&value[i]);
       for(int i=0; i<n; ++i) scanf("%d",&volume[i]);
       for(int i=0; i<n; ++i)
       {
           for(int v=V; v>=volume[i]; --v)
           {
               dp[v]=max(dp[v],dp[v-volume[i]]+value[i]);
           }
       }
       printf("%d\n",dp[V]);
   } return 0;
}

/*
Sample Input
1
5 10
1 2 3 4 5
5 4 3 2 1

Sample Output
14
*/


你可能感兴趣的:(HDU,01背包)