贪心算法-活动选择问题(Python实现)
时间:2022-07-22
本文章向大家介绍贪心算法-活动选择问题(Python实现),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,
# 如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
# 每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。
# 如果选择了活动i,则它在半开时间区间[si, fi]内占用资源。
# 若区间[si, fi]与区间[sj, fj]不相交,则称活动i与活动j是相容的。
# 也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。
# 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,
# 是可以用贪心算法有效求解的很好例子。
# 该问题要求高效地安排一系列争用某一公共资源的活动。
# 贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。
import ioTool
#编程任务:在所给的活动集合中选出最大的相容活动子集合。
def recursive_activity_selector(s,f,k,n):
m = k + 1
while m <= n and s[m] < f[k]:
m = m + 1
if m <= n:
return str(m) + " "+ str(recursive_activity_selector(s,f,m,n))
else:
return " "
if __name__ == '__main__':
s = [0,1,3,0,5,3,5,6,8,8,2,12] #开始时间
f = [0,4,5,6,7,9,9,10,11,12,14,16] #结束时间
print(len(s),len(f))
n = 11
k = 0
res = recursive_activity_selector(s, f, k, n)
print(res)
ioTool.writeLine(res,"output1.txt")
结果:
- 面试官最爱的volatile关键字
- 玩转 WebView ,突破系统限制,让缓存更简单,更灵活
- Mycat 读写分离 数据库分库分表 中间件 安装部署,及简单使用
- 50道Java线程题
- Jrebel6.3.3破解,配置图文教程
- Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)
- Keras中带LSTM的多变量时间序列预测
- Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
- Hibernate 的性能优化的时候碰到了"抓取策略",有四种
- 基于 Spring Cloud 完整的微服务架构实战
- maven build时报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
- Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
- Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config
- 用Raspberry Pi Zero打造「即插即用」的Web服务器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法