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读写二进制文件的方法
May 09 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
一道python走迷宫算法题
Jan 22 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
linux下python中文乱码解决方案详解
Aug 28 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
详解pandas赋值失败问题解决
Nov 29 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
OpenCV 图像梯度的实现方法
Jul 25 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/04/09 欧美动漫
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
Redis构建分布式锁
2017/03/28 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
详解Django中的权限和组以及消息
2015/07/23 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python 正确保留多位小数的实例
2018/07/16 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
python面向对象法实现图书管理系统
2019/04/19 Python
Python 串口读写的实现方法
2019/06/12 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
python与js主要区别点总结
2020/09/13 Python
Python用户自定义异常的实现
2020/12/25 Python
会计专业毕业生自我鉴定
2013/10/29 职场文书
电子专业推荐信范文
2013/11/18 职场文书
物业保安主管岗位职责
2013/12/25 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
服务标兵事迹材料
2014/05/04 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书