Python使用贪婪算法解决问题

yipeiwu_com6年前Python基础

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解析树及树的遍历

Python解析树及树的遍历

解析树 完成树的实现之后,现在我们来看一个例子,告诉你怎么样利用树去解决一些实际问题。在这个章节,我们来研究解析树。解析树常常用于真实世界的结构表示,例如句子或数学表达式。 图 1:一...

使用 Python 获取 Linux 系统信息的代码

哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份...

使用python的pexpect模块,实现远程免密登录的示例

说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3)....

Python3实现汉语转换为汉语拼音

Python3实现汉语转换为汉语拼音

本文实例为大家分享了Python3实现汉语转换为汉语拼音的具体代码,供大家参考,具体内容如下 工具: Python3.6.2,pycharm 1.使用了 第三方模块 pypinyin(点...

基于Python获取城市近7天天气预报

基于Python获取城市近7天天气预报

这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先,我们打开中国天气网,找到...