题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<math.h> 5 #include<string.h> 6 #include<vector> 7 #include<queue> 8 #include<map> 9 #include<iterator> 10 #include<vector> 11 #include<set> 12 using namespace std; 13 14 int dp[10005],w[10005],v[10005]; 15 16 int main() 17 { 18 int cas,n,vol; 19 scanf("%d",&cas); 20 while(cas--) 21 { 22 scanf("%d %d",&n,&vol); 23 memset(dp,0,sizeof(dp)); 24 25 for(int i=1;i<=n;i++) 26 scanf("%d",&w[i]); 27 for(int i=1;i<=n;i++) 28 scanf("%d",&v[i]); 29 30 for(int i=1;i<=n;i++) 31 for(int j=vol;j>=v[i];j--) 32 dp[j]=max(dp[j],dp[j-v[i]]+w[i]); 33 printf("%d ",dp[vol]); 34 } 35 return 0; 36 }