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正则分组的应用
Nov 10 Python
python冒泡排序算法的实现代码
Nov 21 Python
Python 26进制计算实现方法
May 28 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
详解python 爬取12306验证码
May 10 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
使用K.function()调试keras操作
Jun 17 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 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 strcmp使用说明
2010/04/22 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
javascript 数组的方法集合
2008/06/05 Javascript
JavaScript 事件查询综合
2009/07/13 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
python单例模式实例分析
2015/04/08 Python
Python sys.argv用法实例
2015/05/28 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
简约控的天堂:The Undone
2016/12/21 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
合作协议书范本
2014/04/17 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
实习单位推荐信
2015/03/27 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书