2012-08-29 390 views
1

當N個僱員出現在 組織中時,我們會得到N個日期偏差範圍。喜歡的東西
1-4(即員工會在1日,2日,3日和4日)
2-6
8-9
..
1-14
我們必須在組織活動最少的天數,這樣每個員工至少可以參加兩次該活動。請提出算法(可能貪婪)來做到這一點。 PS:事件是一天的事件。事件計劃貪婪

+0

活動是否需要連續發生? –

回答

2

如果你的數據很小,你可以蠻橫的。選擇2天的所有可能的組合。對於每個組合,嘗試一下,看看是否每個人都可以參加。如果不是,請選擇3天的所有可能組合,查看是否每個人都可以參加3人中的2人,依此類推。它是指數型的,但對您的目的而言可能並不那麼糟糕。

貪婪的方法是統計每天有多少人在工作,並選擇最多人數的一天。重複計算每天有多少人在工作誰沒有預定兩個事件並選擇最多人數的一天。當然,不要選擇同一天兩次。

0

我認爲這可以通過以下方式貪婪與結束日期

Maintain a num count for all intervals. (Initialize all to 0) 
If num = 0 place the two events on the last two days of this interval. 
If num = 1 place one event on the last day of this interval 
If num = 2 already two events have been covered for this interval. 

在區間上的事件配售可能會導致在隨後的事件NUM數增加排序事件來完成。