当前位置: 首页 > article >正文

活动安排.

本节学习活动安排问题,各个活动使用同一资源,在活动之间如何取舍才能使举办的活动数量最多.这是一个非常经典的使用贪心算法的问题.

问题描述:

给定某一天活动的时间安排表time,time[i][0]和time[i][1]分别表示各个活动的开始时间和结束时间,由于各个活动使用的是同一片场地,试问如何安排活动能使场地举办的活动最多.

思路解析:

优先选取结束时间早的活动,可以为未举办的活动尽可能的预留时长,然后判断下一个活动的开始时间是否在当前活动的结束时间后.若是,则选取该活动,若否,则对下一个活动进行判断.变量如下:

Time变量:表示各个作业所需时间

Re变量:表示所有被选取活动的时间的集合

完整代码如下:

def activity(time):
    # 初始化一个空列表re,用来存储不重叠的活动
    re = []
    
    # 对输入的时间列表time按照结束时间进行排序
    time.sort(key=lambda x: x[1])
    
    # 将排序后的第一个活动(最早结束的活动)添加到结果列表re中
    re.append(time[0])
    
    # 从time列表的第二个元素开始遍历,因为第一个元素已经被添加到re中了
    for t in time[1:]:
        # 如果当前活动的开始时间不早于re列表中最后一个活动的结束时间,则这两个活动不重叠
        if t[0] >= re[-1][1]:
            # 将当前活动添加到re列表中
            re.append(t)
    
    # 返回不重叠的活动列表re以及这些活动的总数
    return re, len(re)


http://www.kler.cn/a/461085.html

相关文章:

  • 《Xsens动捕与人形机器人训练》讲座将于1月9日下午2:30在线上召开
  • vue2、element的el-select 选项框的宽度设置、文本过长问题
  • 图书项目:整合SSM
  • WeNet:面向生产的流式和非流式端到端语音识别工具包
  • ensp QOS的配置
  • 实践:事件循环
  • nginx-nginx的缓存集成
  • Tube Qualify弯管测量系统在汽车管路三维检测中的应用
  • 08.VSCODE:内嵌MSYS2及三方库UTF8-CPP的实战
  • Spring 框架——@Async 注解
  • 可以突破合同相对性原则,不包括借用资质及多层转包和违法分包关系中的实际施工人
  • 【华为OD-E卷-统计匹配的二元组个数 100分(python、java、c++、js、c)】
  • 大语言模型遇上寻路算法:LLM-A*如何让路径规划效率提升50%?
  • 高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程
  • 又一年。。。。。。
  • QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE (二)
  • 基于Spring Boot + Vue3实现的在线汽车保养维修预约管理系统源码+文档
  • MySQL 并行复制:提升数据同步速度的秘密武器
  • Maven (day04)
  • Type-C接口台式显示器:LDR6021引领新潮流
  • 激光雷达点云语义分割——Polarseg环境配置
  • 深入理解 MVCC:多版本并发控制详解
  • Android 系统 AlarmManager 系统层深度定制
  • Qt信号的返回值
  • Xpath学习
  • AirLLM: 分层推理在低内存硬件上的应用