美文网首页
0-1背包相关模版。

0-1背包相关模版。

作者: Niu_Zi | 来源:发表于2017-02-27 15:24 被阅读0次

n种物品,每种物品只有一个。第i种物品的体积为Vi,重量为Wi。选一些物品撞倒一个容量为C的背包,使总体积不超过C时重量尽量大。

代码1:

for (int i = n; i >= 1; i--)
            for (int j = 0; j <= c; j++){
                d[i][j] = (i == n ? 0 : d[i+1][j]);
                if(j >= V[i]) d[i][j] = max(d[i][j],d[i+1][j-V[i]]+W[i]);
            }

答案为d[1][C]。

代码2(用f(i,j)表示“把前i个物品装到容器为j的背包中的最大总重量”):

for (int i = 1; i <= n; i++)
            for (int j = 0; j <= c; j++){
                f[i][j] = (i == n ? 0 : f[i-1][j]);
                if(j >= V[i]) f[i][j] = max(f[i][j],f[i-1][j-V[i]]+W[i]);
            }

代码3(边读边计算):

for (int i = 1; i <= n; i++){
                scanf("%d%d",&V,&W);
            for (int j = 0; j <= c; j++){
                f[i][j] = (i == n ? 0 : f[i-1][j]);
                if(j >= V) f[i][j] = max(f[i][j],f[i-1][j-V]+W);
            }
        }

代码4(滚动数组):

memset(f, 0, sizeof(f));
        for(int i = 1; i <= n; i++){
            scanf("%d%d",&V,&W);
            for (int j = C; j >= 0; j++)
                if(j >=V) f[j] = max(f[j], = f[j - V] + W);
        }

相关文章

  • 0-1背包相关模版。

    n种物品,每种物品只有一个。第i种物品的体积为Vi,重量为Wi。选一些物品撞倒一个容量为C的背包,使总体积不超过C...

  • 算法-动态规划-背包问题

    背包问题是基础的动态规划问题,包含了0-1背包,完全背包,多重背包等。 0-1背包 存在容量为 的背包 , 件体...

  • Algorithm进阶计划 -- 动态规划(下)

    经典动态规划背包问题最长子序列问题 1. 背包问题 1.1 0-1 背包问题 0-1 背包问题,描述如下: 上面...

  • 背包问题

    背包问题属于典型的动态规划问题。这里我们将详细介绍0-1背包,完全背包和多重背包问题 一、 0-1背包 有N件物品...

  • lintcode-k数和

    动态规划(确定0-1背包、完全背包、多重背包)0-1背包:每个元素要么出现,要么不出现,逆序遍历,数组定义为:前i...

  • 背包问题

    1、前言 背包问题是典型的动态规划问题,它有非常多的类型,本文讨论最常见的0-1背包问题 0-1背包问题描述:有一...

  • 动态规划

    0-1背包问题 自己实现的0-1背包问题的动态规划解法,先贴上吧,动态规划原理解释有空再写。

  • (python实现)购物单问题

    购物单问题实际上是0-1问题,在解决这个问题之前,要理解0-1背包问题。可以自己百度或者阅读我对0-1背包问题的理...

  • 动态规划入门总结(未完待续)

    首先通过求解0-1背包问题的思路演化来引出动态规划的方法。0-1背包假设我们有一个最大负重量为9的背包,同时我们有...

  • 各种背包问题

    0-1背包我比较熟悉,二维dp,通过观察方程可以优化成1维dp,不再赘述 完全背包跟0-1背包的区别是每种型号的物...

网友评论

      本文标题:0-1背包相关模版。

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