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通过shutil实现快速文件复制的方法
Mar 14 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
python实现RSA加密(解密)算法
Feb 17 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
sklearn-SVC实现与类参数详解
Dec 10 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
python中如何设置代码自动提示
Jul 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
一道python走迷宫算法题
2018/01/22 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
详解Python中import机制
2020/09/11 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
python中实现栈的三种方法
2020/12/19 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
2015年体检中心工作总结
2015/05/27 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
关于保护环境的建议书
2019/06/24 职场文书
详解Python中的for循环
2022/04/30 Python