相容問題,解析時給出其他幾種貪心策略(如按開始時間從小到大、每個活動時間的占用時間等),並給出這些貪心策略無法實現最優的反例。
有n項活動申請使用同乙個禮堂,每項活動有乙個開始時間和乙個截止時間。如果任何兩個活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。
設s=為活動的集合,si和fi分別為活動i的開始和截止實踐。
定義:活動i和j相容,即si=>fj或sj=>fi,i<>j
方法:把活動按照截止時間從小到大排序,使得f1<=f2<=…<=fn,然後從前向後挑選,只要與前面選的活動相容,就可以把這項活動選入。
反例:1)按開始時間從小到大
2) 按占用時間從小到大
("最多能安排%d項活動"
,cnt);}
/*71 22 3
2 44 8
5 66 7
7 8*/
附測試結果:
《演算法分析與設計》 作業10 相容問題
一 問題 問題描述 有n項活動申請使用同乙個地點,每項活動有乙個開始時間和乙個截止時間。如果任何兩項活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。問題建模 設s為活動的集合,s和f分別為活動的開始和截止時間。定義 活動i和j相容。求s最大的兩兩相容的活動子集a。把活動按照截...
演算法分析與設計作業10 貪心演算法 相容問題
有n項活動申請使用同乙個禮堂,每項活動有乙個開始時間和乙個截止時間。如果任何兩個活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。將輸入的一組開始與截至時間按結束時間公升序排列 依次遍歷每個活動,根據已選擇的最後乙個活動的結束時間和遍歷到的活動的開始時間來判斷是否將該活動選擇。...
演算法 test10 相容問題
相容問題,解析時給出其他幾種貪心策略 如按開始時間從小到大 每個活動時間的占用時間等 並給出這些貪心策略無法實現最優的反例。把活動按照截止時間從小到大排序,使得f1 f2 fn,然後從前向後挑選,只要與前面選的活動相容,就可以把項活動選入a。k 4 1 選擇活動1,截止時間最早 活動2,3與活動1不...