码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划之背包问题(持续更新)

时间:2018-08-05 11:50:41      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:name   ble   bsp   col   ring   span   cstring   更新   scan   

一、01背包:

n个物品,每个物品有其重量和价值。你的背包装物品的总重量不能超过 m ,求获得的最大价值。

模板题:HDU - 2602 Bone Collector

 

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 1100

int main()
{
    int t;
    scanf("%d", &t);
    for (int ca = 1; ca <= t; ca++)
    {
        int n, m;
        int f[maxn][maxn], v[maxn], w[maxn];
        memset(f, 0, sizeof(f));

        scanf("%d%d", &n, &m);

        for (int i = 1; i <= n; i++)
            scanf("%d", &v[i]);
        for (int i = 1; i <= n; i++)
            scanf("%d", &w[i]);

        for (int i = 1; i <= n; i++)
            for (int j = 0; j <= m; j++)
            {
                f[i][j] = f[i-1][j];
                if (j >= w[i])
                    f[i][j] = max(f[i-1][j], f[i-1][j-w[i]]+v[i]);
            }
            
        printf("%d\n", f[n][m]);
    }
}

 

动态规划之背包问题(持续更新)

标签:name   ble   bsp   col   ring   span   cstring   更新   scan   

原文地址:https://www.cnblogs.com/ruthank/p/9424794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!