http://acm.hdu.edu.cn/showproblem.php?pid=2602
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(void) { int t,i,j; int n,V; int cost[1005],w[1005]; int dp[1005]; cin>>t; while(t--) { memset(dp,0,sizeof(dp)); cin>>n>>V; for(i = 0;i< n;i++) cin>>w[i]; for( i = 0;i<n;i++) cin>>cost[i]; for(i= 0;i<n;i++) for( j = V;j>=cost[i];j--) dp[j]=max(dp[j],dp[j-cost[i]]+w[i]); cout<<dp[V]<<endl; } }