假設要在足夠多的會場裡安排一批活動,並希望使用盡可能少的會場。設計乙個有效的貪心演算法進行安排(這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,相應於要找的最小會場數)。
能夠使用同一會場的前提是,該會議的開始時間大於該會場最後一場會議的結束時間。
設定陣列a和b,分別儲存活動的開始時間和結束時間,然後分別從小到大排序。
這樣就得到了最小的開始時間和最小的結束時間,會場數s初始為0。
如果當前會議的開始時間小於結束時間(因為開始時間按公升序排列,所以一定大於上一活動開始時間,不可能相容),那麼就要新增一會場,s++。
如果當前會議的開始時間小於結束時間,那麼就可以將該會議加入已開會場中,結束時間更新。
#include
#include
#include
using namespace std;
inthall
(int n,
int a[
100]
,int b[
100]
)int
main()
會場安排問題
會場安排問題 問題描述 假設要在足夠多的會場裡安排一批活動,活動的開始時間和結束時間已知,並希望使用盡可能少的會場。設計乙個有效的演算法進行安排。分析 這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,就對應要找的最小會場數。...
會場安排問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...
會場安排問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如...