算法——贪心算法

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

复制代码
# 首先创建一个表,包含所覆盖的州
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)

输出结果:


相关推荐
surtr11 天前
Round 1019(div2) CD
数据结构·c++·算法·贪心算法·stl
小刘不想改BUG2 天前
LeetCode 56.合并区间 Java
java·python·leetcode·贪心算法·贪心
晚风(●•σ )2 天前
【数据结构】——算法设计范式的相关习题
数据结构·算法·贪心算法·深度优先·动态规划·剪枝·广度优先
汉克老师5 天前
2025年海淀区中小学信息学竞赛复赛(小学组试题第六题 蜂窝网络 (net))
c++·贪心算法·北京海淀中小学信息学竞赛·lower_bound
向葭奔赴♡5 天前
Android AlertDialog实战:5种常用对话框实现
android·java·开发语言·贪心算法·gitee
程序员-King.5 天前
day106—双指针—长度最小的子数组(LeetCode-209)
算法·贪心算法
ffcf5 天前
消息中间件6:Redis副本数变为0和删除PVC的区别
算法·贪心算法
蕓晨6 天前
钱币找零问题-贪心算法解析
c++·算法·贪心算法
我不会写代码njdjnssj6 天前
贪心算法+动态规划
算法·贪心算法·动态规划
程序员-King.7 天前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法