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中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
Python编程入门的一些基本知识
May 13 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
Python 查找字符在字符串中的位置实例
May 02 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
用pycharm开发django项目示例代码
Jun 13 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 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动态生成函数示例
2014/03/21 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
简单了解什么是神经网络
2017/12/23 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python list多级排序知识点总结
2019/10/23 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
物流仓储计划书
2014/01/10 职场文书
关于建议书的格式范文
2014/05/20 职场文书
优秀员工评优方案
2014/06/13 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle