美文网首页
动态规划之01背包

动态规划之01背包

作者: YuhangQ | 来源:发表于2017-04-20 18:48 被阅读0次

例题

OpenJudge - 采药

二维写法

#include <iostream>
using namespace std;
const int MAXN = 1010;
int f[MAXN][MAXN], w[MAXN], c[MAXN];
int main() {

    int t, m;
    cin >> t >> m;
    for(int i=1; i<=m; i++)
        cin >> w[i] >> c[i];

    for(int i=1; i<=m; i++)
        for(int j=1; j<=t; j++)
            if(w[i]<=j)
                f[i][j] = max(f[i-1][j], f[i-1][j-w[i]] + c[i]);
            else
                f[i][j] = f[i-1][j];

    cout << f[m][t] << endl;

    return 0;
}

维度压缩(一维)[tui]

#include <iostream>
using namespace std;
const int MAXN = 1010;
int f[MAXN], w[MAXN], c[MAXN];
int main() {
    int t, m;
    cin >> t >> m;
    for(int i=1; i<=m; i++)
        cin >> w[i] >> c[i];

    for(int i=1;i<=m;i++)
       for(int j=t;j>=w[i];j--)
             f[j]=max(f[j],f[j-w[i]]+c[i]);
    cout << f[t] << endl;

    return 0;
}

相关文章

  • 算法学习收藏

    动态规划问题 动态规划(最优子结构和重叠子问题的比较) 动态规划解决01背包问题 01背包问题 最优二叉查找树 《...

  • 动态规划之01背包

    例题 OpenJudge - 采药 二维写法 维度压缩(一维)[tui]

  • 动态规划-01背包

    问题描述 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?为方便...

  • 动态规划之01背包和完全背包

    01背包问题(注意看注释) 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。每种物品仅...

  • 背包系列问题3——换零钱

    参考资料:1. 动态规划之背包问题系列2. 换零钱 只能从选择一个》》01背包问题:是否可以,max改为||

  • 动态规划之背包问题(01背包,完全背包,多重背包)

    01背包 问题描述 有N个物品,每个物品的重量为weight[i],每个物品的价值为value[i]。现在有一个背...

  • 背包

    背包问题九讲笔记_01背包背包问题是动态规划中最基本的题目。 动态规划的4步骤:1.找出子结构2.递归3.自底而上...

  • 动太规划

    动太规划问题有很多,这里只讨论两个问题: 取子数组的最大和 01背包问题 参考:算法之美:动态规划 - Bourb...

  • 背包入门

    背包,是动态规划里一类典型的问题,主要有:01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,有依赖背...

  • 2.3 记录结果再利用的“动态规划”

    2.3.1 记忆化搜索与动态规划 1. 01背包问题 //// Created by Nathan on 15/...

网友评论

      本文标题:动态规划之01背包

      本文链接:https://www.haomeiwen.com/subject/ltnlzttx.html