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算法学习之计数排序实例
Dec 18 Python
Python 异常处理实例详解
Mar 12 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
python实现彩色图转换成灰度图
Jan 15 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
django创建超级用户过程解析
Sep 18 Python
pytorch简介
Nov 11 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
详解NumPy中的线性关系与数据修剪压缩
May 25 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中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
vue动态子组件的两种实现方式
2019/09/01 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
用js实现放大镜效果
2020/10/28 Javascript
python检测远程端口是否打开的方法
2015/03/14 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python开发的实用计算器完整实例
2017/05/10 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
python IP地址转整数
2020/11/20 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
初中数学教学反思
2014/01/16 职场文书
工地质量标语
2014/06/12 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL