魔兽争霸3之冰封王座
魔兽争霸3之冰封王座
| Time Limit: 1000MS | Memory Limit: 65535KB |
| Submissions: 47 | Accepted: 21 |
Sample Input
4 3 1 3 2 4 3 5 4 6 4 3 1 2 2 5 3 6 4 7
Sample Output
9 7
解析:
这是道多重背包的问题,因此用多重背包的经典代码即可解决,见如下代码:
# include<stdio.h> # include<string.h> struct node { int v; int w; }g[105]; int Max(int a,int b) { return a>b?a:b; } int main() { int nCase,nVal; int i,j; int dp[2005]; while((scanf("%d %d",&nCase,&nVal))!=EOF) { for(i=0;i<nCase;i++) scanf("%d %d",&g[i].v,&g[i].w); memset(dp,0,sizeof(dp)); for(i=0;i<nCase;i++) //多重背包的经典代码 for(j=g[i].v;j<=nVal;j++) dp[j]=Max(dp[j-g[i].v]+g[i].w,dp[j]); printf("%d\n",dp[nVal]); } return 0; }
浙公网安备 33010602011771号