hdoj 2602-Bone Collector解题报告
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602
最基本的01背包问题,现在发现需要好好的搞搞基础题了,校赛的一个多重背包竟然没做出来。
View Code
1 #include<stdio.h> 2 #include<string.h> 3 #define N 1005 4 int a[N]; 5 int v[N]; 6 int val[N]; 7 int max(int a,int b) 8 { 9 return a>b?a:b; 10 } 11 int main() 12 { 13 int t,n,i,j,k,m; 14 scanf("%d",&t); 15 while(t--) 16 { 17 scanf("%d%d",&n,&m); 18 memset(a,0,sizeof(a)); 19 for(i=0;i<n;i++) 20 scanf("%d",val+i); 21 for(i=0;i<n;i++) 22 scanf("%d",v+i); 23 for(i=0;i<n;i++) 24 for(j=m;j>=0;j--) 25 { 26 if(j-v[i]>=0) 27 a[j]=max(a[j],a[j-v[i]]+val[i]); 28 } 29 printf("%d\n",a[m]); 30 } 31 return 0; 32 }