擅长:python、mysql、java
<p>试试这个代码,对我有用:</p>
<pre><code>def getCombi(tasks):
first = getNext([0,0], tasks)
combi = [first]
while True:
nextTask = getNext(combi[-1],tasks)
if nextTask != ["EmptyTask"]:
combi.append(nextTask)
else: break
return combi
def getNext(MainTask, tasks):
i = MainTask[1]
taskDiffrencesList = []
for task in tasks:
if task[0] > i:
x = task[0]-i
else: continue
d = task[1]-task[0]
taskDiffrencesList.append([[x,d],task])
smallestDiffrence = [10000, ["EmptyTask"]]
for entry in taskDiffrencesList:
if entry[0][0]+entry[0][1] < smallestDiffrence[0]:
smallestDiffrence[0] = entry[0][0]+entry[0][1]
smallestDiffrence[1] = entry[1]
return smallestDiffrence[1]
print(getCombi([[5,9],[1,2],[3,4],[0,6],[5,7],[8,9]]))
</code></pre>
<p>上一个任务2和下一个任务之间的差异是[1和下一个任务的[1和2]之间的差异是[1和2]之间的[1和2]之间的差异。然后它接受两个差异之和最小的任务。这可能不会总是给你正确的名单,但几乎。在</p>
<p>希望对你有帮助!在</p>