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

Posted ruthank

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划之背包问题(持续更新)相关的知识,希望对你有一定的参考价值。

一、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
", f[n][m]);
    }
}

 

以上是关于动态规划之背包问题(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

动态规划之01背包问题(含代码C)

LC指北-持续更新中

LC指北-持续更新中

LC指北-持续更新中

LC指北-持续更新中

动态规划经典题目之01背包问题