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自定义函数的创建、调用和函数的参数详解
Mar 11 Python
python概率计算器实例分析
Mar 25 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python对接ihuyi实现短信验证码发送
May 10 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
使用scrapy实现增量式爬取方式
Jun 21 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
详解Python的Django框架中的模版继承
2015/07/16 Python
Python制作爬虫抓取美女图
2016/01/20 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
Python selenium自动化测试模型图解
2020/04/15 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
德国旅游网站:weg.de
2018/06/03 全球购物
大学校园毕业自我鉴定
2014/01/15 职场文书
策划创业计划书
2014/02/06 职场文书
初中学校军训方案
2014/05/09 职场文书
基层党员公开承诺书
2014/05/29 职场文书
计算机专业求职信
2014/06/02 职场文书
大学生毕业求职信
2014/06/12 职场文书
公务员年度个人总结
2015/02/12 职场文书