接上一篇,同样的01背包问题,上一篇采用动态规划的方法,现在用回溯法解决。回溯法采用深度优先策略搜索问题的解,不多说,代码如下:

bestV=0

curW=0

curV=0

bestx=None

def backtrack(i):

global bestV,curW,curV,x,bestx

if i>=n:

if bestV

bestV=curV

bestx=x[:]

else:

if curW+w[i]<=c:

x[i]=True

curW+=w[i]

curV+=v[i]

backtrack(i+1)

curW-=w[i]

curV-=v[i]

x[i]=False

backtrack(i+1)

if __name__=='__main__':

n=5

c=10

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

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

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

backtrack(0)

print(bestV)

print(bestx)

运行结果如下:

原文:http://blog.csdn.net/littlethunder/article/details/26621427

python 回溯法 01背包问题_01背包问题(回溯法)python实现相关推荐

  1. python动态规划01背包_01背包问题(动态规划)python实现

    在01背包问题中,在选择是否要把一个物品加到背包中.必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比較,这样的方式形成的问题导致了很多重叠子问题,使用动态规划来解决.n=5是物品的数量,c ...

  2. 回溯应用-- 0-1背包问题

    文章目录 1. 问题描述 2. 回溯解决思路 1. 问题描述 0-1背包非常经典,很多场景都可以抽象成这个问题.经典解法是动态规划,回溯简单但没有那么高效. 有一个背包,背包总的承载重量是 W kg. ...

  3. 0/1背包问题——动态规划、回溯、分支限界法对比

    0/1背包问题--动态规划.回溯.分支限界法对比 2017.12.19 20:42:02 字数 3713 阅读 2820 目录 1.问题描述 1.1 问题描述 1.2 问题的数学表示(规划类问题,此种 ...

  4. 分枝定界法解0/1背包问题

    分枝定界法解0/1背包问题 关键词:分支定界.0-1背包 分枝定界法简介 分枝定界法按照树形结构来组织解空间,展开节点后,有两种策略: 策略一.把节点加入 FIFO 队列当中: 策略二.把节点加入到堆 ...

  5. [回溯算法] 五大常用算法之回溯法

    算法入门6:回溯法 一. 回溯法 – 深度优先搜素 1. 简单概述 回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解 ...

  6. 分枝限界法求解0/1背包问题

    问题描述 有n个重量分别为{w1,w2,-,wn}的物品,它们的价值分别为{v1,v2,-,vn},给定一个容量为W的背包. 设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中 ...

  7. 动态规划法改进:用序偶法求0/1背包问题

    动态规划法改进:用序偶法求0/1背包问题 1.问题 2.方法 3.实现代码 序偶法求0/1背包问题(动态规划法改进版) by 孙琨SealSun at UCAS 2015.11.20 #include ...

  8. 回溯java算法_聊聊算法——回溯算法

    "递归只应天上有,迭代还须在人间",从这句话我们可以看出递归的精妙,确实厉害,递归是将问题规模逐渐减小, 然后再反推回去,但本质上是从最小的规模开始,直到目标值,思想就是数学归纳法 ...

  9. 经典背包问题3——背包问题求方案数 、背包问题求具体方案

    经典背包问题3--背包问题求方案数 .背包问题求具体方案 1. 背包问题求方案数 2. 背包问题求具体方案 1. 背包问题求方案数 有 N 件物品和一个容量是 V的背包.每件物品只能使用一次. 第 i ...

  10. Python项目实战 —— 01. 疾病预测结构化数据

    Python项目实战 Python项目实战--目录 Python项目实战 -- 01. 疾病预测结构化数据 一.背景 二.解题思路 三.数据分析 3.1 数据清洗 3.2 数据分析 3.2.1 相关系 ...

最新文章

  1. IT从业人员必看的10个论坛
  2. 没想到,因为这场AI大会,我也可以凡尔赛一把
  3. 【solr5.5环境搭建】在tomcat8里面部署solr5.5
  4. Mybatis(笔记)
  5. vue的v-model绑定对象属性时,更新不及时,不能修改
  6. Django,Celery, rabbitmq
  7. new一个对象是个什么过程
  8. 关于URL的转码与解码
  9. 物联网和互联网之间,在本质上有什么区别?
  10. 存储简单数据——Preferences
  11. 常用的人格测试理论等小结
  12. windows10下部署环境并运行Siammask中的demo全过程记录
  13. Python图像增强(翻转和旋转)
  14. 微信能用支付宝钱包了
  15. 集成电路只有丝印如何识别引脚顺序
  16. trans【Total3DUnderstanding】论文翻译+解读学习 2020.10.14
  17. 揪住家庭安防刚需,智能锁取代智能家电成为新“入口”
  18. the ECDSA host key for ‘pc2‘ differs from the key for the IP address ‘192.168.144.250‘
  19. 抖音短视频服务器维护中无法打开,打不开抖音视频的解决办法
  20. 如何使用wce进行hash注入

热门文章

  1. tinymce移动端使用_中小站长该如何做好移动端SEO优化
  2. 如何配置 Cilium 和 BGP 协同工作?
  3. 计算机无法传输文件,qq无法传输文件_电脑文件无法通过QQ发送怎么办
  4. HTML班级网站实例(笔记1)
  5. CH340G常见故障的处理
  6. 什么时候可以重用我~
  7. signature=d601b7b6eb512df6319aad970c9aaeab,Excise Tax Return Serial Number 97-17 971101 971115
  8. [易飞]一张领料单单身仓库飞了引起的思考
  9. php中理解print EOT分界符和echo EOT的用法区别
  10. 给刘成龙的回信( 云中逸客)