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中字典的键的使用
Aug 19 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
教你使用python画一朵花送女朋友
Mar 29 Python
基于DataFrame改变列类型的方法
Jul 25 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
Python 使用type来定义类的实现
Nov 19 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
构建高效的python requests长连接池详解
May 02 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
关于python中导入文件到list的问题
Oct 31 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编写文件多服务器同步程序
2016/07/02 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[01:09:24]Ti4开幕式
2014/07/19 DOTA
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
金融专业毕业生自荐信
2014/06/26 职场文书
汶川大地震感悟
2015/08/10 职场文书
礼貌问候语大全
2015/11/10 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
学生安全责任协议书
2016/03/22 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js
 python中的元类metaclass详情
2022/05/30 Python