poj 3624 0-1背包类问题 动态规划

来源:互联网 发布:前端如何请求后台数据 编辑:程序博客网 时间:2024/06/15 06:26

刚开始的时候采用了用二维数组存储的方式,超内存了,所以换了下面这种

#include <stdio.h>
#include <string.h>
#define maxw 12881
#define maxn 3403

int w[maxn], d[maxn];
int dp[maxw];
int n, c;
int main(){
    int i, j, tmp;
    scanf("%d%d", &n, &c);
    for(i = 1; i <= n; ++i) scanf("%d%d", &w[i], &d[i]);
    memset(dp, 0, sizeof(dp));
    for(i = 1; i <= n; ++i)
      for(j = c; j >= w[i]; --j)
        if(dp[j] < (tmp = dp[j - w[i]] + d[i])) dp[j] = tmp;
        
    printf("%d", dp[c]);
    return 0;
}

0 0
原创粉丝点击