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 参数列表中的self 显式不等于冗余
Dec 01 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
python 编写简单网页服务器的实例
Jun 01 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
Python socket模块方法实现详解
Nov 05 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python Tkinter的简单入门教程
Apr 11 Python
python urllib库的使用详解
Apr 13 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP PDO函数库详解
2010/04/27 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
动手学习无线电
2021/03/10 无线电
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
不安全的常用的js写法
2009/09/15 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
我爱我校演讲稿
2014/05/21 职场文书
义和团口号
2014/06/17 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
网聊搭讪开场白
2015/05/28 职场文书
河童之夏观后感
2015/06/11 职场文书