尽可能多的活动能兼容的使用公共资源
**基本思路:**一个活动的结束时间小于另一个活动的起始时间则两个活动相容。
运算过程:
从前往后依次遍历,当i的结束时间小于j的开始时间,活动j加入集合,直至全部活动扫描完成。
时间复杂度:o(n)
def GreedySelector(n, s, f, a):
# n 事件总数
# s 事件开始时间
# f 事件结束时间
# a 是否加入事件
a[0] = True
j = 0
for i in range(1, n):
if s[i] > f[j]: # 结束时间小于下一个的开始时间
a[i] = True
j = i
else:
a[i] = False
print(a)
if __name__ == '__main__':
GreedySelector(5, [1, 3, 5, 7, 13], [2, 8, 8, 11, 12], [0, 0, 0, 0, 0])