有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]
defgreedy_selector
(a, n)
: b =[0
] end = a[0]
[1]for i in
range(1
, n)
:if a[i][0
]>= end:
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
]))
活動安排問題 貪心演算法
問題表述 設有n個活動的集合 e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活 i都有乙個要求使用該資源的起始時間 si和乙個結束時間 fi,且 si 如果選擇了活動 i,則它在半開時間區間 si,fi 內占用資源。若區間 si,fi 與區間 sj,...
活動安排問題(貪心演算法)
類似的問題是 選點問題和區間覆蓋問題。活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都...
活動安排問題 貪心演算法
活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同...