貪心演算法3 會議安排

2021-08-28 22:45:17 字數 1356 閱讀 8745

問題描述:要在有限的時間內安排盡量多的會議。

貪心策略(前提是會議不衝突,也就是兩個會議不同時進行):

1. 每次選擇持續時間最短的安排。這樣如果開始時間很遲,安排的會議也很少,所以策略不是最優;

2. 每次選擇開始時間最早的。這樣如果結束時間很遲,那安排的會議也很少,也不是最優策略;

3. 每次選擇開始時間最早的並且持續時間最短的來安排。也就是結束時間最早的來安排,這樣是最優策略,可以安排盡量多的會議。

排序規則:先按結束時間從小到大排序,如果結束時間相同,就按開始時間從大到小排序(保證持續時間最短)

演算法設計:

思路:1. 用結構體記錄每個會議的開始時間,結束時間和會議的編號,便於後面進行記錄。

2. 對會議進行排序,先按結束時間從小到大排序,如果結束時間相同,就按開始時間從大到小排序。

3. 貪心策略:每次都選擇結束時間最早且互不衝突的會議,並記錄其編號和選擇的會議數。

#include#define maxn 1005

#includeusing namespace std;

struct meet;

meet a[maxn];

bool cmp(meet &a, meet &b)

int main()

sort(a+1,a+1+n,cmp);

for(int i = 1; i <= n; ++i)

cout << a[i].num << " " << a[i].begt << " " << a[i].endt << endl;

int last = a[1].endt;

int sum = 1;//選擇的會議總數

int t = a[1].num;

cout << t << endl; //第幾個會議

for(int i = 2; i <= n; ++i)

} cout << sum << endl;

return 0;

}

貪心演算法 會議安排

題目描述 在大公司裡,會議是很多的,開會得有場子,要場子你得先在電子流裡預訂。如果你是專案組新來的小弟,那麼恭喜你,每天搶訂會議室的任務就光榮的分給你了。老大要求你盡可能多的訂會議室,但是這些會議室之間不能有時間衝突。input input檔案中可以包括多個測試案例。t t 20 輸入檔案的第一行表...

會議安排問題(貪心演算法)

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

貪心演算法 堆 安排會議室

一些專案要占用乙個會議室宣講,會議室不能同時容納兩個專案的宣講。給你每乙個專案開始的時間和結束的時間 給你乙個陣列,裡面是乙個個具體的專案 你來安排宣講的日程,要求會議室進行 的宣講的場次最多。返回這個最多的宣講場次。貪心 按照結束時間最早排序 public class bestarrange 小根...