0-1背包算法python实现

import numpy as np#计算状态数组
def bag(n,value,weight):  '''n      背包容量value  价值数组weight 重量数组'''h = len(value)arr = np.zeros((h+1,n+1), int)for i in range(1,h+1):for j in range(1,n+1):if( weight[i-1]<=j ):arr[i][j] = max( ((value[i-1]) + arr[i-1][j-weight[i-1]]), arr[i-1][j])else:arr[i][j] = arr[i-1][j] return arr#判断所取的是哪些物品
def such(arr, weight, flag):i,j = np.shape(arr) #记录数组的形状 i=6, j=23if (i>0 and j>0 and len(weight)>=0):if ((arr[i-1][j-1] > arr[i-2][j-1]) and (j-1 >= weight[i-2])):flag.append(i-1)  #第几个物品# such(arr[i-2][j-1-weight[i-2]], weight[:-1], flag)such(arr[0:i-1 :,0:j-weight[i-2]], weight[:-1], flag)else:# such(arr[i-2][j-1], weight, flag)such(arr[0:i-1 :,], weight, flag)return flag#有4个体积是2,3,5,6,价值为3,4,5,7的物品,背包的容量是11
a = []
value = [3,4,5,7]  #价值数组
weight = [2,3,5,6] #重量(体积)数组
arr = bag(11,value,weight)  # 11为背包容量
print("状态数组为:")
print(arr)
print("------------------------------------------------------------")
flag = such(arr,weight,a)
print("所取的物品编号为:",flag[::-1])

0-1背包算法python实现相关推荐

  1. Python 0/1背包、动态规划

    参考:http://www.cnblogs.com/fcyworld/p/6243012.html Python 0/1背包.动态规划 0/1背包问题:在能承受一定重量的背包中,放入重量不同,价值不同 ...

  2. 数据结构与算法 / 回溯算法(八皇后、0 - 1 背包)

    回溯算法,顾名思义,就是在没有得到最优解的前提下,不断的返回至前面的岔路口位置,重新选择,直至遍历了所有的情况或者得到的预期最优解的情况下再结束. 与贪心算法不同的是,回溯算法理论上是可以得到最优解, ...

  3. 决策树之ID3、C4.5、C5.0等五大算法及python实现

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- C5.0决策树之ID3.C4.5.C5.0算法 ...

  4. 动态规划算法初步(6)——0/1 背包

    动态规划算法初步(6) 例题五:0/1 背包(背包型) 题目: 一个旅行者有一个最多能装m公斤物品的背包,现在有n件物品,它们的重量分别是w1,w2,-,wn,它们的价值分别为c1,c2,-,cn.若 ...

  5. 背包算法(一)-01背包-史上最详细解答

    背包算法(一)-01背包-史上最详细解答 1. 题目 2. 分析 2.1 状态表示 2.2 状态计算 3. 实现 4. 优化 5. 测试 1. 题目 问题描述:有n件物品和容量为m的背包,给出i件物品 ...

  6. 资源|2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 2019 年 10 月,谷歌正式宣布,开源机器学习库 TensorFlow 2.0 现在 ...

  7. 棋盘最短路径 python_Dijkstra 最短路径算法 Python 实现

    Dijkstra 最短路径算法 Python 实现 问题描述 使用 Dijkstra 算法求图中的任意顶点到其它顶点的最短路径(求出需要经过那些点以及最短距离). 以下图为例: 算法思想 可以使用二维 ...

  8. 算法分析与设计——蛮力法0/1背包

    蛮力法0/1背包 蛮力法 蛮力法是一种简单直接解决问题的方法,常常直接基于问题的描述,所以蛮力法也是最容易应用的方法. 蛮力法所依赖 的基本技术是遍历,即采用一定的策略依次处理待求解问题的所有元素,从 ...

  9. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

最新文章

  1. 飞桨领航团 x Datawhale联合Meetup来了!杭州的小伙伴可以见面了!
  2. xutils使用手册(二)——数据库
  3. 循环相关函数range、enumerate、zip
  4. 前端还是后端?这些公号教你一锅端!
  5. JVM调优之jstack找出发生死锁的线程
  6. typeScript模块四
  7. Linux Shell脚本_禁止定时任务发送邮件
  8. scp拷贝文件夹到另一个服务器目录中
  9. (16)verilog 条件编译(FPGA不积跬步101)
  10. 12.FreerRTOS学习笔记-链表的使用
  11. adb下载安装教程(已安装Android studio)
  12. 湖南电信拨号上网的某个记录资料
  13. python怎么解压rar文件
  14. 结构化数据和非结构化数据、半结构化数据的区别
  15. 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
  16. js实现表格按行滚动
  17. RocketMQ避坑指南:java后端开发电脑配置
  18. 技术架构分析:攻克Dota2的OpenAI-Five
  19. 使用ANSI控制字体颜色
  20. BurpSuite实战七之使用Burp Scanner

热门文章

  1. 伯德图 matlab,Matlab/Simulink中bode图的画法
  2. python中uppercase是什么意思_Python string.ascii_uppercase方法代码示例
  3. 关于Edge被篡改:打开的主页被改动、收藏夹被改动等问题
  4. Vue exports is not defined 问题解决(@svgdotjs/svg.js)
  5. 2013.6甲骨文公司的电话面试
  6. 最近做项目所积累的一些小知识(一)
  7. 甲方公司vs乙方公司
  8. 鸿蒙系统有carp,手把手教你CarPlay怎么用?CarPlay支持车型一览
  9. win11下安装Cuda和Cudnn,保姆及教程!!!
  10. android cpu调度6,关于安卓系统的手机CPU频率和I/O调度器的设置,如何设置才能让手机更流畅,求解释。...