1
所以我有一些問題解決了調度n個活動的問題,這些問題可能會重疊使用最少量的教室。解決的辦法是如下:貪婪算法的實現
找到最小數量的教室安排一組活動S在要通過活動,根據開始和結束的時間做到這一點efefficiently 舉動。維護兩個教室列表:在時間t時繁忙的房間和在時間t時空閒的房間。當t是開始時間 某些活動將此活動安排到免費房間並將房間移至忙碌列表。 同樣,當活動停止時,將房間移至空閒列表。最初從零房間開始。如果 空閒列表中沒有房間,則創建一個新房間。
該算法可以通過排序活動來實現。在每個開始或結束時間,我們可以通過 安排活動並在固定時間之間移動列表間的房間。總的時間是 排序主導,因此是O(n lg n)。
我的問題是
1)首先,你如何通過活動移動雙方開始並在同一時間完成的時間?
2)我不太瞭解如何在固定時間內移動列表間的房間。如果您想將房間從繁忙列表移動到空閒列表,那麼您是否必須遍歷忙列表中的所有房間,並查看哪些房間的結束時間已經過去?
3)是否有任何'狀態'變量,我們需要跟蹤,這樣做,使其工作?
因此,大廳本身不必與彼此鏈接在一起,他們只需要鏈接到事件,這些事件又與開始和結束時間相關 – user1855952
@ user1855952:應該仍然是大廳在2個列表中的1個列表中,指出它們是使用還是免費,以便在按時間排序的事件列表中看到「開始活動」項目時,始終可以抓住一個空閒的大廳(只需拿起第一個免費清單)。當你說「鏈接到」時,我不知道你指的是哪個方向:我的意思是開始和結束時間對象指向事件對象,它指向了大廳對象。 –