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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
python控制台英汉汉英电子词典
Apr 23 Python
Python运算符重载用法实例
May 28 Python
python实现web方式logview的方法
Aug 10 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python多继承顺序实例分析
May 26 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
python文字转语音实现过程解析
Nov 12 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
python在地图上画比例的实例详解
Nov 13 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
PHP 编程的 5个良好习惯
2009/02/20 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
关于JS中二维数组的声明方法
2016/09/24 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
django 创建过滤器的实例详解
2017/08/14 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python轮询机制控制led实例
2020/05/03 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
python 实现批量图片识别并翻译
2020/11/02 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
德国旅游网站:weg.de
2018/06/03 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
团干部培训方案
2014/06/03 职场文书
CAD实训总结范文
2015/08/03 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL
vue封装数字翻牌器
2022/04/20 Vue.js