zoukankan      html  css  js  c++  java
  • 贪心算法——间隔任务规划——python

    间隔任务规划 

    问题描述

    • 输⼊为 n  个报告集 R=[r1, …… , rn],以及每⼀个报 告的开始不结束时间 ri=[ai, bi]

    • 输出:最多的相容报告集

    • 两个报告相容:即两报告的发⽣时间⾥⾯没有重合

    贪心策略

      每次选择结束时间最早的报告

    def get_max_intervalschedule(joblist):
        job_schedule = []
        num_job = len(joblist)
        joblist.sort(key = lambda x: x[2]) #按照结束时间进行排序
        
        for n in range(num_job):
            if not len(job_schedule):
                job_schedule.append(joblist[n])
            else:
                #job(n)是否与job_schedule中的jobs相容
                if job_schedule[-1][2] <= joblist[n][1]:
                #如果job_schedule中最后一个任务的结束时间小于joblist的开始时间
                    job_schedule.append(joblist[n])
                    
        return job_schedule
    
    if __name__ == "__main__":
        joblist = [["e", 8, 10], ["b", 2, 5],
                   ["c", 4, 7],["a", 1, 3],
                   ["d", 6, 9]
                   ]
        print(get_max_intervalschedule(joblist

    输出结果

    [['a', 1, 3], ['c', 4, 7], ['e', 8, 10]]

    贪心算法需要证明结果是否正确

    黑夜给了我一双漆黑的眼睛,而我却用它来寻找光明
  • 相关阅读:
    上下文管理
    复习1
    描述符
    迭代器斐波那契数列
    迭代器协议
    __call__ 方法
    析构方法__del__
    __module__和class
    1.8命令执行顺序控制与管道(学习过程)
    1.7文件系统操作与磁盘管理(学习过程)
  • 原文地址:https://www.cnblogs.com/tangxinghe/p/11128168.html
Copyright © 2011-2022 走看看