题目地址:点击打开链接
题意:a为价值,b为体积,求容量为V的背包最多可以装多少骨头。
#include<stdio.h>
int dp(int a[],int b[],int N,int V){
int i,j,f[1001]={0};
for(i=0;i<N;i++){
for(j=V;j>=b[i];j--){//j--
if(f[j]<f[j-b[i]]+a[i])
f[j]=f[j-b[i]]+a[i];
}
}
return f[V];
}
main(){
int i,j,T,N,V;
int a[1001],b[1001];
scanf("%d",&T);
for(i=0;i<T;i++){
scanf("%d%d",&N,&V);
for(j=0;j<N;j++)
scanf("%d",&a[j]);
for(j=0;j<N;j++)
scanf("%d",&b[j]);//有个bug在于数组又没录上,错写成i
printf("%d\n",dp(a,b,N,V));
}
}