算法——贪心算法

《算法图解》------贪心算法

复制代码
# 首先创建一个表,包含所覆盖的州
states_needed = set(['mt','wa','or','id','nv','ut','az']) # 传入一个数组,转换成一个集合

#可供选择的广播台清单
stations = {}
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'])

#用一个集合来表示最后选择的广播台
final_stations = set()

""" 计算答案 """

#遍历所有广播台,计算覆盖最多未覆盖州的广播台

while states_needed:
	best_station = None
	states_coverd = set()
	for station, states in stations.items(): 
		coverd = states_needed & states # 	求交集。
		if len(coverd) > len(states_coverd):  # coverd 包含在states_needed和states_for_station 中的州。检查该州是否比best_station覆盖的多。
			best_station = station
			states_coverd = coverd
	
	states_needed -= states_coverd
	final_stations.add(best_station)	# 如果是就把best_station 设置为当前广播台

print(final_stations)

输出结果:


相关推荐
小汉堡编程9 天前
LeekCode第3767题选择K个任务的最大总分:详细思考过程幽默解析 专门为小白准备
算法·leetcode·贪心算法·编程·小白专用教程
载数而行52010 天前
算法系列2之最短路径
c语言·数据结构·c++·算法·贪心算法
十八岁讨厌编程10 天前
【算法训练营 · 二刷总结篇】贪心算法、图论部分
算法·贪心算法·图论
ValhallaCoder11 天前
hot100-贪心
数据结构·python·算法·贪心算法
散峰而望12 天前
【算法竞赛】堆和 priority_queue
开发语言·数据结构·c++·算法·贪心算法·动态规划·推荐算法
小龙报12 天前
【算法通关指南:数据结构与算法篇】二叉树相关算法题:1.二叉树深度 2.求先序排列
c语言·开发语言·数据结构·c++·算法·贪心算法·动态规划
Renhao-Wan13 天前
Java 算法实践(八):贪心算法思路
java·算法·贪心算法
2501_9469614713 天前
2026年官方放假通知+复工开工时间表
贪心算法·宽度优先
载数而行52013 天前
算法系列1之最小生成树
c语言·数据结构·c++·算法·贪心算法
小范自学编程14 天前
算法训练营 Day31 - 贪心算法 Part05
算法·贪心算法