给定n 个物品的价值与体积,与包的体积 ,求包能装的最大价值

 const int N=1005;

struct bone{
  int value;
  int volume;
}bones[N];
int dp[N]; //dp[i] ,包为i的体积装的最大价值
int main(){
   int t,n,i,x,k,m,sum,j,v,Max,temp,end,start,flag;
   cin>>t;
   while(t--){
       memset(dp,0,sizeof(dp));
      scanf("%d%d",&n,&v);
      for(i=0;i<n;i++)
        scanf("%d",&bones[i].value);
      for(i=0;i<n;i++)
        scanf("%d",&bones[i].volume);
      for(i=0;i<n;i++)// 加入第i个物品
        for(j=v;j>=bones[i].volume;j--) //j包的体积要大于此物品的体积
            dp[j]=max(dp[j],dp[j-bones[i].volume]+bones[i].value); //i物体可装可不装
                     //在(j-i物体的体积)的包上加上i物体的价值  与j包价值比较
printf("%d\n",dp[v]);
   }
  return 0;
}