設有n個活動的集合e=,其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。
每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si<fi。如果選擇了活動i,則它在半開時間區間[si ,fi )內占用資源。若區間[si ,fi )與區間[sj,fj )不相交,則稱活動i與活動j是相容的。當 si ≥ fj 或 sj ≥ fi 時,活動i與活動j相容。
活動安排問題就是在所給的活動集合中選出最大的相容活動子集合。
把活動的起始時間和結束時間定義為結構體:
struct action;
活動集合e記為陣列:
action a[1000];
按活動的結束時間公升序排序
排序比較因子:
bool cmp(const action &a, const action &b)
使用標準模板庫函式排序(下標0未用):
sort(a, a+n+1, cmp);
void greedy(vector&v,int n)
} cout<<"可以安排如下的活動:"
v[i].display();
}
活動安排問題
作為新一代的好青年肯定會喜歡許多的電視節目,比如說新聞聯播,焦點訪談,又如招聘類的節目有非你莫屬,職來職往,娛樂節目如快樂大本營。現在給你每個節目的開始時間和結束時間,要求你求出看盡可能多的完整節目。每個電視節目i都有乙個起始時間si和乙個結束時間fi,且si 對於活動安排問題可以用貪心演算法解決,...
活動安排問題
活動安排 描述 設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si 輸入 輸入只有乙個用例,第一行為一正整數n,表示活動個數,接下來n行,每行兩個整數,分別表示第i號活...
活動安排問題
有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 ...