概述:一个骨头收集者沿路收集骨头,每个骨头有价值和重量,收集者的背包容量有限,问他能收集的骨头的最大价值.
思路:01背包模板问题.
感想:无.
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int f[2002];
int max(int x,int y){
if(x<y)
x=y;
return x;
}
int main()
{
int t,n,V,v[1000],w[1000],i,j;
cin>>t;
while(t--){
cin>>n>>V;
for(i=1;i<=n;i++)
cin>>w[i];
for(i=1;i<=n;i++)
cin>>v[i];
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
for(j=V;j>=v[i];j--)
f[j]=max(f[j],f[j-v[i]]+w[i]);
cout<<f[V]<<endl;
}
return 0;
}