间隔任务规划
问题描述
• 输⼊为 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]]
贪心算法需要证明结果是否正确