現(xiàn)需要申請一些場地舉辦一批活動,每個活動有開始時間和結(jié)束時間。在同一個場地,如果一個活動結(jié)束之前,另一個活動開始,即兩個活動沖突。若活動A從1時間開始,5時間結(jié)束,活動B從5時間開始,8時間結(jié)束,則活動A和B不沖突?,F(xiàn)要計算n個活動需要的最少場地數(shù)。
求解該問題的基本思路如下(假設(shè)需要場地數(shù)為m,活動數(shù)為n,場地集合為P1,P2,…,Pm),初始條件Pi均無活動安排:
(1)采用快速排序算法對n個活動的開始時間從小到大排序,得到活動a1,a2,…,an。對每個活動ai,i從1到n,重復(fù)步驟(2)、(3)和(4);
(2)從p1開始,判斷ai與P1的最后一個活動是否沖突,若沖突,考慮下一個場地P2,…;
(3)一旦發(fā)現(xiàn)ai與某個Pj的最后一個活動不沖突,則將ai安排到Pj,考慮下一個活動;
(4)若ai與所有己安排活動的Pj的最后一個活動均沖突,則將ai安排到一個新的場地,考慮下一個活動;
(5)將n減去沒有安排活動的場地數(shù)即可得到所用的最少場地數(shù)