Python使用贪婪算法解决问题


Posted in Python onOctober 22, 2019

Python使用贪婪算法解决问题

集合覆盖问题

假设你办了个广播节目,要让全美50个州的听众都收听到。为此,你需要决定在哪些广播台播出。在每个广播台播出都需要支出费用,因此你力图在尽可能少的广播台播出

1.创建一个列表,其中包含要覆盖的州

states_needed = set(["mt", "wa", "or", "id", "nv", "ut", "ca", "az"])

2.使用散列表表示可供选择的广播台清单

stations = dict() stations["kone"] = set(["id", "nv", "ut"]) stations["ktwo"] = set(["wa", "id", "mt"]) stations["kthree"] = set(["or", "nv", "ca"]) stations["kfour"] = set(["nv", "ut"]) stations["kfive"] = set(["ca", "az"])

3.使用集合来存储最终选择的广播台

final_stations = set()

4.循环

while states_needed:
  # 遍历所有的广播台,从中选择覆盖最多的未覆盖州的广播台,将这个广播台存储在best_station中
  best_station = None
  # 这个集合包含该广播台覆盖的所有未覆盖的州
  states_covered = set()
  for station, states in stations.items():
   covered = states_needed & states
   if len(covered) > len(states_covered):
    best_station = station
    states_covered = covered
 states_needed -= states_covered
 final_stations.add(best_station)

print(final_stations) # 结果为{'ktwo', 'kthree', 'kone', 'kfive'}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用Image处理图片常用技巧分析
Jun 01 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
python pandas模块基础学习详解
Jul 03 Python
由面试题加深对Django的认识理解
Jul 19 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Python发送邮件实现基础解析
Aug 14 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
python元组和字典的内建函数实例详解
Oct 22 #Python
Python List列表对象内置方法实例详解
Oct 22 #Python
Python序列对象与String类型内置方法详解
Oct 22 #Python
Python基本语法之运算符功能与用法详解
Oct 22 #Python
基于Python实现拆分和合并GIF动态图
Oct 22 #Python
python  logging日志打印过程解析
Oct 22 #Python
安装2019Pycharm最新版本的教程详解
Oct 22 #Python
You might like
PHP错误提示的关闭方法详解
2013/06/23 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
js实现随机8位验证码
2020/07/24 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
举例讲解Python中装饰器的用法
2015/04/27 Python
python 数据的清理行为实例详解
2017/07/12 Python
简述Python2与Python3的不同点
2018/01/21 Python
python验证码识别实例代码
2018/02/03 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python制作简单五子棋游戏
2019/06/18 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
应付会计岗位职责
2013/12/12 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
就业意向书
2014/07/29 职场文书
党的生日演讲稿
2014/09/10 职场文书
工作检讨书500字
2014/10/19 职场文书
实习介绍信范文
2015/05/05 职场文书
2016情人节宣传语
2015/07/14 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python