貪心演算法實現會場安排問題

2021-08-14 01:23:46 字數 1278 閱讀 5262

演算法概述:

貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。

貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當前狀態有關。

問題概述:

學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何安排。

如果上乙個活動在t時間結束,下乙個活動最早應該在t+1時間開始。

input

每組測試資料的第一行是乙個整數n ( 1 < n < 10000 )表示該測試資料共有n個活動。

隨後的n行,每行有兩個正整數bi , ei ( 0 <= bi , ei < 10000 ),分別表示第i個活動的起始與結束時間( bi <= ei )

output

對於每一組輸入,輸出最多能夠安排的活動數量

sample input3

1 10

10 11

11 20

sample output2

問題分析

這樣的題目,我們要在一定的時間內實現最多的活動,也就是說我們要讓這一段時間更加的「滿」,所以,我們的策略是按照每個活動結束時間來把每個活動從結束早到結束晚來排序(我是用快速排序法實現),然後乙個乙個判斷過去。

**實現:

#includeint t;

int activity_selector();

void quicksort(int left,int right);

//定義乙個結構體,把每個活動的結束時間和開始時間存入

struct note

q[10000];

int main()

quicksort(1,t);

res=activity_selector();

printf("%d\n",res);

}void quicksort(int left,int right)//快速排序法

while(iq[i].end)

}return num;

}

會場安排問題 貪心演算法

描述 學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何安排。輸入 第一行是乙個整型數m m 100 表示共有m組測試資...

會場安排問題之貪心演算法

會場安排問題 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動...

NYOJ 貪心演算法14 會場安排問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述學校的小禮堂每天都會有許多活動,有時間這些活動的計畫時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排乙個活動。現在小劉有一些活動計畫的時間表,他想盡可能的安排更多的活動,請問他該如何...