http://acm.hdu.edu.cn/showproblem.php?pid=2602
题意:有n块骨头,一个体积为v的背包,给出每个骨头的体积和价值,求背包能装的最大值
思路:很裸的背包,回顾一下
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int dp[1005];
int vol[1005];
int val[1005];
int main()
{
int Test;
cin>>Test;
while(Test--){
int n, v;
cin>>n>>v;
for(int i = 0; i < n ; i++){
cin>>val[i];
}
for(int i = 0; i < n; i++){
cin>>vol[i];
}
memset(dp, 0, sizeof(dp));
for(int i = 0; i < n; i++){
for(int k = v; k >= vol[i]; k--){
if(dp[k] < dp[k-vol[i]] + val[i]){
dp[k] = dp[k-vol[i]] + val[i];
}
}
}
cout<<dp[v]<<endl;
}
return 0;
}