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

    鼓捣好久 终于了然了一些

    0-1背包问题描述

      有一个窃贼在偷窃一家商店时发现有n件物品,第i件物品价值为vi元,重量为wi,假设vi和wi都为整数。他希望带走的东西越值钱越好,但他的背包中之多只能装下W磅的东西,W为一整数。他应该带走哪几样东西?

      【注】0-1背包问题中:每件物品或被带走,或被留下,(需要做出0-1选择)。小偷不能只带走某个物品的一部分或带走两次以上同一个物品。

    采用动态规划算法求解0-1背包问题,

    用子问题定义状态:即f[i][ J]表示前i件物品放入一个容量为j的背包可以获得最大价值。则其核心状态转移方程是:

    f[i][ j]=max{f[i-1][ j],f[i-1][ j-a[i]]+c[i]}

    即,“将前i件物品放入容量为j的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为j的背包中”,价值为f[i-1][j];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为j-a[i]的背包中”,此时能获得的最大价值就是f[i-1][ j-a[i]]再加上通过放入第i件物品获得的价值c[i]

    具体实现程序详见https://github.com/Wuyanan520/boruishangge/,源码为.ipython文件,为方便您审阅,转存了一份html文件。

  • 相关阅读:
    Linux下的lds链接脚本详解
    STM32启动过程解读与跟踪验证
    STM32的启动过程分析
    STM32启动过程--启动文件--分析
    STM32之中断
    STM32F4XX启动文件分析
    Synergy CORTEX M 启动流程
    AT 指令和常见错误码
    Tomcat部署时war和war exploded区别
    C++虚函数表解析***
  • 原文地址:https://www.cnblogs.com/sxbjdl/p/5689382.html
Copyright © 2011-2022 走看看