美文网首页
背包问题笔记01

背包问题笔记01

作者: 好吃的的的的大熊 | 来源:发表于2016-08-02 23:03 被阅读0次

背包问题简介
有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。

背包问题思路
核心:动态规划

理解方式: 状态转移

思路(状态转移方程):

f[i][v] = max{ f[i-1][v] , f[i-1][v-c[i]]+w[i] }

思路详解:

若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1 件物品的问题。

如果不放第i件物品,那么问题转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]

解题过程:

 int valueMax(int i, int v)
 {
    if (i == 0 && Cargo[0] < v)return Cargo[0];

    if (i == 0 && Cargo[0] > v)return 0;

    if (Cargo[i] > v) 
         return valueMax(i - 1, v);

    if (Cargo[i] < v)
         return max(valueMax(i - 1, v), valueMax(i - 1, v - Cargo[i]) + Cargo[i]);
  }

参考资料:http://blog.sina.com.cn/s/blog_8cf6e8d90100zldn.html

相关文章

  • 背包问题笔记01

    背包问题简介有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使...

  • 动态规划-背包问题

    01背包问题 详解:01背包问题详解链接

  • 背包

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

  • 背包问题1(01背包)

    N件物品,没见有重量Wi,价值Vi;选其中几件放入容量为M的背包中,求价值的最值。——经典背包问题背包问题分三类:...

  • 01背包问题

    动态规划算法一般用来求解最优化问题,当问题有很多可行解,而题目要求寻找这些解当中的“最大值”/“最小值”时,通常可...

  • 01背包问题

    题目描述:给定 n 个物品和一个容量为 W 的背包,物品 i 的重量是 wi,其价值为 vi 。应该如何选择装入背...

  • 01背包问题

    有n个重量和价值分别为wi,vi的物品。从这些物体中挑选出总重量不超过W的物品,求所有方案中价值总和的最大值。 1...

  • 01背包问题

    A - Bone Collector Many years ago , in Teddy’s hometown t...

  • 01背包问题

    令V(i,j)表示在前i(1<=i<=n)个物品中能够装入容量为就j(1<=j<=C)的背包中的物品的最大价值,则...

  • 01背包问题

    题目:有A(2kg,6$);B(2kg,3$);C(6kg,5$);D(5kg,4$);E(4kg,6$)五种物品...

网友评论

      本文标题:背包问题笔记01

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