简单01背包
1 #include<stdio.h> 2 #include<string.h> 3 int max(int a,int b) 4 { 5 return a>b?a:b; 6 } 7 int main() 8 { 9 int t; 10 int n,v; 11 int f[1100],val[1100],vol[1100]; 12 scanf("%d",&t); 13 while(t--) 14 { 15 scanf("%d %d",&n,&v); 16 for(int i=0;i<n;i++) 17 scanf("%d",&val[i]); 18 for(int i=0;i<n;i++) 19 scanf("%d",&vol[i]); 20 memset(f,0,sizeof(f)); 21 for(int i=0;i<n;i++) 22 for(int j=v;j>=0;j--) 23 if(j>=vol[i]) 24 f[j]=max(f[j],f[j-vol[i]]+val[i]); 25 printf("%d ",f[v]); 26 } 27 }