1. 地址
http://poj.org/problem?id=3624
2. 定位
动态规划
0-1背包
3. 分析
典型0-1背包,具体思路见 hdu 2602。
4. 代码
#include <stdio.h>
#include <stdlib.h>
int weight[3403];
int value[3403];
int dp[12881];
int main()
{
int N,M;
int i,j;
scanf("%d*c",&N);
scanf("%d*c",&M);
memset(weight,0,sizeof(weight));
memset(value,0,sizeof(value));
memset(dp,0,sizeof(dp));
for(i=1; i<=N; i++)
{
scanf("%d %d*c",&weight[i],&value[i]);
}
for(i=1; i<=N; i++)
{
for(j=M; j>=weight[i]; j--)
{
dp[j] = dp[j-weight[i]] + value[i] > dp[j] ? dp[j-weight[i]] + value[i] : dp[j];
}
}
printf("%d\n",dp[M]);
return 0;
}
5. 性能
Exe.Time | Exe.Memory | Code Length | Language |
---|---|---|---|
282MS | 504K | 586B | c |
Ver 1.0 2017-9-18