#include<stdio.h>
#include<string.h>
int main()
{
int num,c,n,value[1000],volume[1000],dp[1000];
scanf("%d",&num);
while (num--)
{
//数据输入
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++)
scanf("%d",&value[i]);
for(int i=1;i<=n;i++)
scanf("%d",&volume[i]);
//初始化数据
memset(dp,0,sizeof(dp));
//利用方程递推
for(int i=1;i<=n;i++)
for(int j=c;j>=volume[i];j--)
dp[j]=dp[j]>dp[j-volume[i]]+value[i]?dp[j]:dp[j-volume[i]]+value[i];
printf("%d\n",dp[c]);
}
return 0;
}
HDU--2602 Bone Collector(0-1背包)
原文:http://www.cnblogs.com/longgongshiye/p/3526646.html