zoukankan      html  css  js  c++  java
  • 0-1背包问题详解

    这里给大家推荐一个好的文章                         http://www.hawstein.com/posts/dp-knapsack.html 

    关于0-1背包问题,也许很多人看过《背包问题九讲》,里面主要是要理解那个背包问题的公式
        ………………………………………………(1)

            公式(1)当然是关键,其实我们很直观地从(1)中看出它的物理含义。F[i,v]这个二维数组代表的意思是,在背包容量为v,我们有从1到 i 号的物品供你选择,那
    么你能在背包容量为v的前提下,所能获得的最大价值是F[i,v】,理解这个是问题中关键的关键。
        对于这个题目:
        
    我们采用伪代码:
        
    用实际的数字来分析问题:
        
    上表是在运行过程中F【i,v】数组的情况。其实这个原理很简单,无非就是对于第i个商品,你选或者不选 。
    …………………………………………………………………………………(1)
    还是这个公式,对于F[i,v],也就是在容是为v的情况下,我们选或者不选第i个商品,如果我们不选第i个商品,那么也就是说在背包容量为v的情况下我们的价值和
    F[i-1,v]是一样的啦,这个意思是,我们不先第i个商品,问题没有进化,还是和原来一样(当然在背包的容量相等情况下),但是如果我们选第i个商品,那么就不
    同了,我们的背包容量得先减Ci      也就是第i个商品的体积啦 。当然我们在牺牲背包的容量的情况下,那么价值也得提升Wi。
    当然我们是在这两者间选那个价值最大的。
























    附件列表

    • 相关阅读:
      QTabWidget改变tabBar位置 并改变文字方向
      QScrollArea-QWidget 添加滚动条
      QPushbutton
      QFileDialog
      MFC RadioButton分组用法
      MFC 调用模态对话框和非模态对话框
      3D Active Button Magic 使用备忘
      unhandledRejection 处理方法
      .Net Core和DevOps系列:Jenkins安装(Docker)
      .Net Core和DevOps系列:Gitea安装(Docker)
    • 原文地址:https://www.cnblogs.com/yml435/p/4668481.html
    Copyright © 2011-2022 走看看