给定一组不同任务完成时间,任务是确定的不能排序 一个人只能做连续的任务,给出一个python的代码
时间: 2024-05-06 21:21:40 浏览: 28
时间序列python代码
来实现最小化完成所有任务的时间。
可以使用贪心算法来解决这个问题。首先将任务按照完成时间从小到大排序,然后从最早开始的任务开始,找到这个人能够同时完成的最多任务,记录下时间 t1,然后继续寻找下一个能够同时完成的任务,记录下时间 t2。这个人的最优完成时间就是 t2-t1+max(t1, t2)。然后将这些任务标记为已完成,继续寻找下一个能够同时完成的任务,直到所有任务都完成为止。
下面是实现代码:
```
def min_task_time(tasks):
tasks.sort() # 按照完成时间排序
n = len(tasks)
used = [False] * n
time = 0
while sum(used) < n:
t1, t2 = float('inf'), float('inf')
for i in range(n):
if not used[i] and tasks[i] >= time:
if tasks[i] < t1:
t1 = tasks[i]
if tasks[i] < t2:
t2 = t1
t1 = tasks[i]
else:
t2 = tasks[i]
time += t2 - t1 + max(t1, t2)
for i in range(n):
if not used[i] and tasks[i] >= t1 and tasks[i] <= t2:
used[i] = True
return time
```
这个代码使用了一个 used 数组来记录已经完成的任务,在每一次寻找能够同时完成的任务的过程中,用 t1 和 t2 记录下当前能够同时完成的最少和次少的任务完成时间。完成一个任务就将其标记为已完成,直到所有任务都完成为止。最后返回时间即可。
阅读全文