在计划中找到最长的差距

时间:2017-09-23 08:35:07

标签: algorithm scheduling job-scheduling

我试图找到两个与任何其他任务不重叠的任务之间的最大差距。给定n个任务及其开始和结束时间。我们还给出了该过程的开始时间和结束时间。最大差距应该在开始和结束之间。

我想出了一个算法,我根据结束时间按升序对任务进行排序,然后使用扫描线方法检查上一个兼容作业的作业i(如果有的话)并计算差距来自那里。但是,我的算法在很多情况下失败了。有什么帮助吗?

Python代码:

largestgap = timedelta(0)
for i in range(len(tasks)):
    s1 = tasks[i].start
    e1 = tasks[i].end
    if s1 > start and s1 < end:
        s2 = tasks[i-1].start
        e2 = tasks[i-1].end
        if s1 > e2:
            if e2 < start:
                largestgap = max(largestgap, s1 - start)
            else:
                largestgap = max(largestgap, s1 - e2)

return str(largestgap.seconds)

0 个答案:

没有答案