貪心演算法 相容問題實驗報告

2021-10-05 13:32:49 字數 611 閱讀 3338

實驗報告

課程名稱 《演算法分析與設計》 實驗日期 2020 年 4 月28日 至 2023年 5月 5 日

學生姓名 戴昊宇 所在班級 計算機184 學號 2018212212015

實驗名稱 貪心演算法-相容問題

實驗地點 同組人員 無

1.問題

有n項活動申請使用同乙個禮堂,每項活動有乙個開始時間和乙個截止時間。如果任何兩項活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。

2.解析

設s為活動的集合,si和fi分別為活動i的開始和截止時間。

定義:活動i和j相容。

求s最大的兩兩相容的活動子集a。

把活動按照截止時間從小到大排序,使得f1<=f2<=…<=fn,然後從前往後挑選,只要和前面選的活動內容相容,就把這項活動選入a。

3.設計

greedy-activity-selector(s,f)

n=s.length

a=k=1

for m=2 to n

if s[m]>=f[k]

a=a和的交集

k=mreturn a

4.分析

演算法複雜度:o(n)

5.原始碼

演算法分析與設計作業10 貪心演算法 相容問題

有n項活動申請使用同乙個禮堂,每項活動有乙個開始時間和乙個截止時間。如果任何兩個活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。將輸入的一組開始與截至時間按結束時間公升序排列 依次遍歷每個活動,根據已選擇的最後乙個活動的結束時間和遍歷到的活動的開始時間來判斷是否將該活動選擇。...

相容問題 貪心策略

有n項活動申請使用同乙個禮堂,每項活動有乙個開始時間和乙個截止時間。如果任何兩個活動不能同時舉行,問如何選擇這些活動,從而使得被安排的活動數量達到最多。設s 為活動的集合,si和fi分別為活動i的開始和截止時間,i 1,2,n 定義 活動i和j相容 si fj或sj fi,i j 求s最大的兩兩相容...

演算法實驗2《貪心演算法實驗》

1.編寫乙個簡單的程式,實現單源最短路徑問題。include include using namespace std void init int list list 0 1 10 list 0 3 30 list 0 4 100 list 1 2 50 list 2 4 10 list 3 2 20...