背景信息:
给出一个建议列表:A = {a1,a2,...,ax},其中每个赋值从指定的开始时间到指定的完成时间运行,选择一个最小大小的赋值集,以便来自给定S的所有时间到F至少占用一个任务。
作业可能重叠,可能在开始时间之前开始,在结束时间之后结束。
仅限要求:所选作业之间没有间隙
所有信息都在assignments.txt文件中以下列格式给出:
2 8 // the first line gives the start time and end time
5 // the second line gives the number of assignments to choose from
1 1 3 // the subsequent lines give the assignment number, start time, and finish time
2 2 6
3 5 7
4 6 9
5 5 10
如何在python中编写此算法?
我的想法: 读取文本文件并存储到数组中。根据它们各自的属性分离阵列的元素,然后对贪婪的alg进行编码,即在持续在开始和结束时间内连续选择最长的分配。
这是我到目前为止所做的:
def readFile():
file = open( "assignments.txt", "r" )
unsortedArray = []
for line in file:
toInt = map(int,line.split())
unsortedArray.append(toInt)
print unsortedArray
return unsortedArray
def sortArray(unsortedArray):
for i in range(2, len(unsortedArray)):
if unsortedArray[i][1] > unsortedArray[i+1][1]:
unsortedArray[i],unsortedArray[i+1] = unsortedArray[i+1],unsortedArray[i]
print unsortedArray[i]
def main():
readFile()
sortArray(readFile())
main()