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 时间操作例子和时间格式化参数小结
Apr 24 Python
用Python编写一个简单的Lisp解释器的教程
Apr 03 Python
python获取指定网页上所有超链接的方法
Apr 04 Python
理解Python中的类与实例
Apr 27 Python
python友情链接检查方法
Jul 08 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
python可视化实现代码
Jan 15 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
Django框架模板用法详解
Jun 10 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桌面中心(一) 创建数据库
2007/03/11 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
用YUI做了个标签浏览效果
2007/02/20 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
对VUE中的对象添加属性
2018/09/18 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
给Python初学者的一些编程技巧
2015/04/03 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
flask-restful使用总结
2018/12/04 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
Python 串口读写的实现方法
2019/06/12 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
linux系统都有哪些运行级别
2012/04/15 面试题
工程监理应届生求职信
2013/11/09 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
高中生期末评语
2014/01/28 职场文书
中学校园广播稿
2015/08/18 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技