题意:给出n个骨头的体积和价值,求容量为v的包能装的最大价值。
基础01背包题。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int v[1100],w[1100],d[1100];
int main()
{
int T;
cin>>T;
while(T--)
{
int n,m,ans=0;
cin>>n>>m;
for(int i=0;i<n;i++) scanf("%d",&v[i]);
for(int i=0;i<n;i++) scanf("%d",&w[i]);
memset(d,0,sizeof(d));
for(int i=0;i<n;i++)
for(int j=m;j>=w[i];j--)
{
d[j]=max(d[j],d[j-w[i]]+v[i]);
ans=max(ans,d[j]);
}
cout<<ans<<endl;
}
}