活動安排問題二

2021-07-14 20:17:39 字數 685 閱讀 7395

問題

有若干個活動,第i個開始時間和結束時間是(s,e),活動之間不能交疊,要把活動都安排完,至少需要幾個教室?

分析 因為要把所有活動都安排完,活動先按開始時間排序,第乙個活動先開乙個教室,如果下乙個活動的開始時間大於等於上乙個活動的結束時間,這個活動併入上乙個教室,反之新開乙個教室,應該比完所有的教室。 演算法

先定義乙個結構體,存放所有活動的時刻。定義乙個陣列存放每個教室上乙個活動的結束時間,陣列存放的個數表示教室。每次比較,發現可以併入已開的教室,更新結束時間,不然下標+1新存乙個結束時間。

**

#include using namespace std;

struct data ;

void sort(data activity, int len)

}}int getclass(data activity, int len)

if (mark == 0)

} return n + 1;//因為是從0開始的,方便陣列

}int main()

{ int n;

cin>>n;

data activity[n];

for(int i=0;i>activity[i].start>>activity[i].end;

sort(activity,n);

cout<

活動安排問題

作為新一代的好青年肯定會喜歡許多的電視節目,比如說新聞聯播,焦點訪談,又如招聘類的節目有非你莫屬,職來職往,娛樂節目如快樂大本營。現在給你每個節目的開始時間和結束時間,要求你求出看盡可能多的完整節目。每個電視節目i都有乙個起始時間si和乙個結束時間fi,且si 對於活動安排問題可以用貪心演算法解決,...

活動安排問題

活動安排 描述 設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si 輸入 輸入只有乙個用例,第一行為一正整數n,表示活動個數,接下來n行,每行兩個整數,分別表示第i號活...

活動安排問題

有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 ...