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 21 Python
Django实现图片文字同时提交的方法
May 26 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
Python程序中的观察者模式结构编写示例
May 27 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python 实现selenium断言和验证的方法
Feb 13 Python
Python中整数的缓存机制讲解
Feb 16 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python binascii 进制转换实例
Jun 12 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
信号生成及DFT的python实现方式
Feb 25 Python
pycharm 关掉syntax检查操作
Jun 09 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使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
js操作二级联动实现代码
2010/07/27 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
sort命令的作用和用法
2012/11/04 面试题
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
机电一体化大学生求职信
2013/11/08 职场文书
质检部职责
2013/12/28 职场文书
青年教师培训方案
2014/02/06 职场文书
四年级学生评语大全
2014/04/21 职场文书
三好学生事迹材料
2014/12/24 职场文书
纪检监察立案决定书
2015/06/24 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
mysql的数据压缩性能对比详情
2021/11/07 MySQL