3.2_backpack_背包问题
--- 背包问题 ---综合考虑价格和重量1. 分数背包 2. 0-1背包
1. 分数背包
# (价值, 重量)
goods = [(60, 10), (100, 20), (120, 30)]
goods.sort(key=lambda x: x[0] / x[1], reverse=True)def fractional_backpack(goods, w):"""分数背包"""m = [0 for _ in range(len(goods))]total_v = 0for i, (price, weight) in enumerate(goods):if w >= weight:m[i] = 1total_v += pricew -= weightelse:m[i] = w / weighttotal_v += m[i] * pricew = 0breakreturn f'拿走 {m},总价值: {total_v}'
2. 0-1背包
tr = [None, {'w': 2, 'v': 3}, {'w': 3, 'v': 4}, {'w': 4, 'v': 8}, {'w': 5, 'v': 8}, {'w': 9, 'v': 10}]def backpack_01(tr, max_w):"""0-1背包"""# 初始化背包:前 i 个宝物中,最大价值为 wm = {(i, w): 0 for i in range(len(tr)) for w in range(max_w + 1)}for i in range(1, len(tr)):for w in range(1, max_w + 1):# 装不下第 i 个宝物,就不装if tr[i]['w'] > w:m[(i, w)] = m[(i - 1, w)]else:# 取最大值:不装第 i 个宝物 / 装第 i 个宝物m[(i, w)] = max(m[(i - 1, w)], m[(i - 1, w - tr[i]['w'])] + tr[i]['v'])return m[(len(tr) - 1, max_w)]
3.2_backpack_背包问题相关推荐
- ACM1881 01背包问题应用
01背包问题动态规划应用 acm1881毕业bg 将必须离开的时间限制看作背包容量,先将他们由小到大排序,然后在排完序的数组中对每个实例都从它的时间限制开始(背包容量)到它的延长时间进行遍历: 1 # ...
- 算法设计与分析第4章 动态规划(一)【背包问题】
第3章动态规划(一)[背包问题] 基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的.不同子问题的数目常常只有多项式量级.在用 ...
- c语言-01背包问题
01背包问题 问题:有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 分析: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选 ...
- 如何在高精度下求解亿级变量背包问题?
导读:国际顶级会议WWW2020将于4月20日至24日举行.始于1994年的WWW会议,主要讨论有关Web的发展,其相关技术的标准化以及这些技术对社会和文化的影响,每年有大批的学者.研究人员.技术专家 ...
- 漫画:阿里巴巴四十大盗的故事-背包问题
今天,跟大家分享一个我关注了很久的公众号「兔保哥」.这个号是我看着她一点点写起来的,既有财经媒体人的客观严谨,又有身为妈妈的温暖贴心.如果你想用保险的力量守护家庭.为爱人遮风挡雨,可以关注她. --- ...
- 背包问题(多重背包+0-1背包)
一:0-1背包问题 #include<iostream> #include<algorithm> #include<cstring> const int maxn= ...
- 三十四、动态规划解决01背包问题
一.动态规划算法介绍 动态规划算法的核心思想是:将大问题划分为小问题进行解决,从而一步一步获取最优解的处理算法. 动态规划算法与分治算法类似,其基本思想是将待求解的问题分解成若干个子问题,先求子问题, ...
- 部分背包的贪婪算法 java_使用JAVA实现算法——贪心算法解决背包问题
packageBasePart;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.IOException ...
- 01背包和完全背包问题
01背包和完全背包问题 posted on 2019-04-20 17:39 sofu6 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/dusf/ ...
最新文章
- Python - 移除List中重复项的五种常用方法
- c语言 proteus 延迟2秒_周周练 | 专升本C语言
- 工程制图 ( 标准件与常用件)
- 一个textView中的文字设置成两种颜色
- Python学习笔记整理(三)Python中的动态类型简介
- lucene 各个版本介绍
- MySQL事务隔离级别及场景测试
- FFMPEG列出DirectShow支持的设备
- 拓端tecdat|SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据
- JSON与JAVA的数据转换
- 安装破解IAR EWARM 8.2,提供注册机
- 【非官方】哈工大2022 形式语言与自动机试题解析
- rsync --exclude或者--exclude-from的路径问题
- 用计算机发送电子邮件,用英语解释一下发送电子邮件的过程 用计算机语言来说一下,大概400到500个英文单词...
- 皇甫懒懒 Java 学习笔记 第一章
- Leetcode1859:将句子排序
- 服务器显示不兼容这是什么问题,服务器server0处于不兼容的状态,怎么办?
- CodeForces961F- k-substrings(哈希)
- 香农编码用matlab实验报告,信息论与编码实验指导书
- linux db2 删除表空间,DB2表清空数据的四种方法及技巧
热门文章
- 写出HTML的基本结构的代码,HTML代码基本结构
- 【Docker闪退】【解决方法】It looks like there is an error with Docker Desktop, restart it to fix it
- js截取最后一个特定字符后面的字符串
- No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Invers
- openxml操作word的基本应用
- 什么是语音通知 / 语音短信 / 语音外呼?
- Editplus激活码2019.5--亲测可用
- DSP、SSP、RTB、ADX、DMP(概念通俗解释)
- SoftLayer Object Storage 节点
- [Luogu4169][Violet]天使玩偶/SJY摆棋子