在01背包问题中,在选择是否要把一个物品加到背包中。必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比較,这样的方式形成的问题导致了很多重叠子问题,使用动态规划来解决。n=5是物品的数量,c=10是书包能承受的重量,w=[2,2,6,5,4]是每一个物品的重量,v=[6,3,5,4,6]是每一个物品的价值,先把递归的定义写出来:

然后自底向上实现,代码例如以下:

def bag(n,c,w,v):

res=[[-1 for j in range(c+1)] for i in range(n+1)]

for j in range(c+1):

res[0][j]=0

for i in range(1,n+1):

for j in range(1,c+1):

res[i][j]=res[i-1][j]

if j>=w[i-1] and res[i][j]

res[i][j]=res[i-1][j-w[i-1]]+v[i-1]

return res

def show(n,c,w,res):

print('最大价值为:',res[n][c])

x=[False for i in range(n)]

j=c

for i in range(1,n+1):

if res[i][j]>res[i-1][j]:

x[i-1]=True

j-=w[i-1]

print('选择的物品为:')

for i in range(n):

if x[i]:

print('第',i,'个,',end='')

print('')

if __name__=='__main__':

n=5

c=10

w=[2,2,6,5,4]

v=[6,3,5,4,6]

res=bag(n,c,w,v)

show(n,c,w,res)

输出结果例如以下:

python动态规划01背包_01背包问题(动态规划)python实现相关推荐

  1. 动态规划——01背包

    动态规划--01背包 1. 经典"01背包" 2. "01背包"方法归纳 3. 实战 3.1 分割等和子集 3.2 最后一块石头的重量 II 3.3 目标和 3 ...

  2. 动态规划01背包算法详解

    动态规划算法核心思想: 将大的问题转化为小问题进行解决. 01背包问题: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn.01背 ...

  3. 01背包python解法_0-1背包问题及Python代码实现

    1.简介 假设我们有n件物品,分别编号为1, 2...n.其中编号为i的物品价值为vi,它的重量为wi.为了简化问题,假定价值和重量都是整数值.现在,假设我们有一个背包,它能够承载的重量是W.现在,我 ...

  4. 算法分析-动态规划-01背包

    在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2--Wn,与之相对应的价值为P1,P2--Pn.求出获得最大价值的方案. 注意:在本题中,所有的体积值均为整数.01的意思是,每个物 ...

  5. 动态规划—0-1背包

    动态规划有以下三个特点: 1:多阶段决策 2:最优值和最优解 3:最优子结构 动态规划采用自底而上的思想保存子问题值,避免重复计算.例如斐波那契数列的递归函数,f(5)=f(3)+f(4),而f(4) ...

  6. c++ 动态规划-01背包

    动态规划 - 01背包问题 1.使用递归遍历(穷举)求解: 01背包问题:给定 n 种物品和一个重量(容量)(限定条件)为 w 的背包,物品 i 的重量是 wi,其价值为 vi.(每种物品只有一个)问 ...

  7. 动态规划-----------01背包,完全背包与多重背包

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  8. 01背包+完全背包问题

      背包问题已经有很多写得很好的博客,这里的背包问题只是一个个人学习总结,希望能够把问题说得更明白清楚易懂. 贴下背包九讲问题的优秀博客网址:   http://blog.csdn.net/pi9nc ...

  9. 0-1背包 java_0-1背包问题,java的动态规划如题,代码如下public

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 0-1背包问题,java的动态规划 如题,代码如下 public class dongtaiguihua01 { public static void m ...

最新文章

  1. ArcGIS Engine10.4版本
  2. 利用Eclipse的JPA自动生成注解实体
  3. android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中
  4. 第七届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
  5. 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)
  6. Https的前世今生
  7. 自定义日志_Dubbo自定义日志拦截器源码分析
  8. 《JavaScript语言精粹》笔记
  9. 关于jqGrid动态改变列的解决方案
  10. 完整的Java软件开发学习路线
  11. kindeditor用法简介
  12. [转]关于公司级别的知识库的建设的一些看法。
  13. HCIP/HCIE RoutingSwitching / Datacom备考宝典系列(九)STP知识点全面总结(生成树协议)
  14. 【Linux】CMAQ实践部署
  15. URL中带特殊字符的处理方式
  16. ode45 matlab 出错,Matlab中ode45求解微分方程组出错。
  17. ProxmoxVE6.2 VLAN配置
  18. 牛客练习赛51(C题 勾股定理)
  19. 不安分的 Go 语言开始入侵 Web 前端领域了
  20. 吉时利源表软件Kickstart与纳米NS-SourceMeter源表软件各有何特点

热门文章

  1. linux检查包是否已经安装,Linux下怎样检查、如何查看某软件包是否已经安装
  2. 上海迪士尼之旅(附攻略)
  3. 影视管理系统-七星修改二开米酷影视7.2完整版源码
  4. 电脑蓝牙打电话-总结(五、玖云33e9cloud)
  5. 大数据科学相关岗位,需要具备哪些数学基础?
  6. 黑莓手机支持的媒体播放类型
  7. 国外的windows7优化大师
  8. 春困夏乏 ,8种食物提神抗疲劳
  9. 【LOSOL】怪物及AI设计
  10. 《30天自制操作系统》-day3(MAC)