标签:
1 int w[105],v[105],c[105],dp[105]; 2 int main(){ 3 int T; 4 scanf("%d",&T); 5 while(T--){ 6 int W,n,ans = 0; 7 memset(dp,0,sizeof(dp)); 8 scanf("%d%d",&W,&n); 9 for(int i = 0 ; i < n ; i ++) scanf("%d%d%d",&w[i],&v[i],&c[i]); 10 for(int i = 0 ; i < n ; i ++){ 11 // for(int j = w[i] ; j <= W ; j ++){ 12 for(int j = W ; j >= w[i] ; j --){ //倒着来 13 for(int k = 1 ; k <= c[i] ; k ++){ 14 if(j < k*w[i]) break; 15 dp[j] = max(dp[j],dp[j-k*w[i]]+v[i]*k); 16 if(dp[j] > ans) ans = dp[j]; //经费不用完,记录答案 17 } 18 } 19 } 20 printf("%d\n",ans); 21 } 22 return 0; 23 }
标签:
原文地址:http://www.cnblogs.com/zstu-jack/p/5308544.html