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

1 5 10 1 2 3 4 5 5 4 3 2 1
14
AC代码:
#include<iostream>
#include<cstring>
#define N 10005
using namespace std;
struct{
int v,c;
}Bag[N];
int n,v,f[N],t;
int main()
{
cin.sync_with_stdio(false);
cin>>t;
while(t--){
cin>>n>>v;
for(int i=1;i<=n;i++)
cin>>Bag[i].c;
for(int i=1;i<=n;i++)
cin>>Bag[i].v;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)
for(int j=v;j>=Bag[i].v;j--)
f[j]=max(f[j],f[j-Bag[i].v]+Bag[i].c);
cout<<f[v]<<endl;
}
return 0;
}
HDOJ 2602 Bone Collector【01背包】
原文:http://blog.csdn.net/mummyding/article/details/43834171