首页 > 其他 > 详细

0,1背包问题

时间:2019-10-02 11:14:20      阅读:95      评论:0      收藏:0      [点我收藏+]

题目描述

思路

代码

#include <cstdio>
#define max(a, b) (a) > (b) ? a : b

int ans[1005][1005];
int n, v, tj[1005], val[1005];

int main() {
    scanf("%d %d", &n, &v);
    for (int i = 1; i <= n; ++i) scanf("%d %d", &tj[i], &val[i]);
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= v; ++j) {
            if (j >= tj[i]) ans[i][j] = max(ans[i - 1][j - tj[i]] + val[i], ans[i - 1][j]);
            else ans[i][j] = ans[i - 1][j];
        }
    }
    printf("%d\n", ans[n][v]);
    return 0;
}

0,1背包问题

原文:https://www.cnblogs.com/liuzz-20180701/p/11616896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!