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 命令行非阻塞输入的小例子
Sep 27 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
如何基于python实现脚本加密
Dec 28 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
如何基于线程池提升request模块效率
Apr 18 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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
将PHP作为Shell脚本语言使用
2006/10/09 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
JS打印组合功能
2016/08/04 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
python3爬取各类天气信息
2018/02/24 Python
浅谈Python type的使用
2019/11/19 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
Original Penguin美国官网:布拉德皮特、强尼德普喜爱的服装品牌
2016/10/25 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
实习单位意见
2015/06/04 职场文书
小爸爸观后感
2015/06/15 职场文书
趣味运动会加油词
2015/07/18 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript
postgresql中如何执行sql文件
2023/05/08 PostgreSQL