背包问题 python实现
根据自己的理解,用python写了背包问题的求解:
问题描述:给定一组物品,每种物品都有自己的重量和价格,在限定的重量内,如何选择才能使物品的总价最高?
1.使用动态规划的思想来解决背包问题
解决思路:动态规划,对每一件物品遍历背包容量,当背包可容纳值大于等于当前物品,与之前已放进去的物品所得价值进行对比,考虑是否需要置换。
代码如下:
#m为包载重量,n为物品数,w为物品的重量,v为物品的价值 def bag(m,n,w,v):#置零表示初始状态value = [[0 for i in range(m+1)] for j in range(n+1)]for i in range(1,n+1):for j in range(1,m+1):value[i][j] = value[i-1][j]if j >= w[i-1] and value[i-1][j-w[i-1]] + v[i-1]:value[i][j] = value[i-1][j-w[i-1]] + v[i-1]return valuedef show(n, m, w, value):print('最大价值为:', value[n][m])x = [False for i in range(n)]j = mfor i in range(n, 0, -1):if value[i][j] > value[i - 1][j]:x[i - 1] = Truej -= w[i - 1]print('背包中所装物品为:')for i in range(n):if x[i]:print('第', i+1, '个,', end='') if __name__ == '__main__':n = 6 #物品的数量,m = 5 #书包能承受的重量,w = [2, 2, 3, 1, 5, 2] #每个物品的重量,v = [2, 3, 1, 5, 4, 3] #每个物品的价值value = bag(m,n,w,v)show(n,m,w,value)
背包问题 python实现相关推荐
- 0-1背包问题python实现
0-1背包问题 ACWings题目链接:https://www.acwing.com/problem/content/2/ 不会的小伙伴可以看一下视频:https://www.bilibili.com ...
- 背包问题 python 背包九讲
基础:01背包 t,m=list(map(int,input().split())) baowu=[None] ditu=[[0]*(t+1) for _ in range(m+1)] for i i ...
- python 完全背包问题_动态规划——背包问题python实现(01背包、完全背包、多重背包)...
参考: 描述: 有N件物品和一个容量为V的背包. 第i件物品的体积是vi,价值是wi. 求解将哪些物品装入背包,可使这些物品的总体积不超过背包流量,且总价值最大. 二维动态规划 f[i][j] 表示只 ...
- 【算法】动态规划 背包问题 python
博主根据老师讲义,自己手撸代码,若有错误,多谢指出.直接上代码 目录 0 讲义 问题定义 子问题划分( 备忘录函数 标记函数) 举个栗子 1 代码 1.1 code:背包问题 1.2 cod ...
- python多重背包_多重背包问题(python实现),动态规划
多重背包问题 感谢这些朋友们的文章,给了我很大启发: https://blog.csdn.net/songyunli1111/article/details/94778914 https://blog ...
- 01背包问题python实现
可以记录路径,有时间再完善 # -*- coding:utf-8 -*- def bag(n, c, w, v):res = [[0 for j in range(c + 1)] for i in r ...
- dp 动态规划 01背包问题 Python
参考学习网址: https://www.bilibili.com/video/av33930433?from=search&seid=10637513335818789097 https:// ...
- python背包问题
背包问题可以分为:01背包 和 完全背包问题. 简要概括: 01背包:每种物品只能拿一次或者不拿. 完全背包:每种物品可以拿无限次. 01背包: import numpy as np weight=[ ...
- Python检查一组数据是否能构成和谐集
封面图片:<Python程序设计实验指导书>(ISBN:9787302525790),董付国,清华大学出版社 图书详情(京东): 本书81个实验项目可与董付国老师的<Python程序 ...
最新文章
- python 动画场景_Python GUI教程(十五):在PyQt5中使用动画
- oracle vm virtualbox如何设置u盘启动_电脑自主U盘装机 如何设置U盘启动
- Spyder导入已有文件夹
- 面试lua笔试题各种坑
- SQL Server存储过程的基本概念以及语法【转】
- 两种大小端判断的方式
- JSON Schema
- 决策树(十)--GBDT及OpenCV源码分析
- Windows和linux(ubuntu)互传文件简便快捷的方法
- 1458: 移动距离(暴力模拟)
- 如何用常量代替session_如何用Python代替Visual Basic应用程序并节省了很多时间
- Citrix XenApp/XenDesktop版本正确选择
- params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors 解决方法
- wkhtmltox使用(html转pdf或图片)
- 2019大学生电子设计竞赛
- QQ等级计算方法及图标
- Ubuntu18.04将QT应用设计为开机自启
- linux下,matplotlib遇到的相关问题以及解决方法
- c#获取word文件页数、字数
- 危机公关中有哪些经典的失败案例?
热门文章
- 基于腾讯x5开源库,提高webView开发效率
- Echarts 极坐标系下的多色柱状图
- 华为手机怎么使用分屏_安卓7.0分屏怎么设置 安卓7.0分屏怎么使用【详解】
- python爬取学校新闻_Python抓取学院新闻报告
- i7 12700KF参数 酷睿i712700KF什么水平i7 12700KF核显相当于什么显卡
- 一文带你读懂异常检测(更新中)
- TeamViewer文件传输怎么用?
- R与RStudio安装与学习(一)
- 如何停止重启启动Redis服务
- DSP28335 Mcbsp SPI实现软件片选