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 10 Python
Python实现的随机森林算法与简单总结
Jan 30 Python
python 获取字符串MD5值方法
May 29 Python
python把1变成01的步骤总结
Feb 27 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python2与Python3的区别点整理
Dec 12 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
Python爬虫基础初探selenium
May 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
用在PHP里的JS打印函数
2006/10/09 PHP
php 中英文语言转换类代码
2011/08/11 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python实现括号匹配的思路详解
2018/08/23 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
python斐波那契数列的计算方法
2018/09/27 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
消防器材管理制度
2014/01/28 职场文书
自我评价的范文
2014/02/02 职场文书
入学申请自荐信范文
2014/02/26 职场文书
培训研修方案
2014/06/06 职场文书
2014年学校工作总结
2014/11/20 职场文书
会议通知
2015/04/15 职场文书