大家好,我是连人。这次的问题比较简单,我们就直接单枪直入了。
有n个活动都要用到同一个地点,他们提交的申请书上明确的写了自己的使用时间是从何时开始何时结束的。现要求尽可能多的安排活动。
首先将活动按结束时间从前到后排好,开始时间无所谓。将第一个活动计入日程,此时活动结束时间是第一个活动的结束时间。之后向后遍历,将开始时间在当前活动结束时间之后的活动计入,更新活动结束时间。
def sort(a, n):
for i in range(0, n):
for j in reversed(range(i+1, n)):
if a[j][1] < a[j-1][1]:
a[j], a[j-1] = a[j-1], a[j]
def greedy_selector(a, n):
b = [0]
end = a[0][1]
for i in range(1, n):
if a[i][0] >= end:
b.append(i)
end = a[i][1]
return b
if __name__ == '__main__':
a = [
[1, 4],
[2, 3],
[1, 2],
[3, 5],
[4, 5],
[4, 8],
[5, 7],
[6, 8]
]
n = 8
sort(a, n)
b = greedy_selector(a, n)
print(len(b))
for i in b:
print(str(a[i][0]) + ' ' + str(a[i][1]))
转载注明出处。