给定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; }