演算法分析:會場安排問題
演算法的設計和描述
- 初始化 ,共有n個會議,陣列B存放開始時間,陣列E存放結束時間(按非減序排序);集合A存放問題的解,即所選擇的會議集合,會議i如果在集合A中,當且僅當A[i]=true;
- 令A【1】=true ,
- 依次掃描每一個會議,如果會議i的開始時間不小于最后一個選人集合A中的會議的結束時間,即將會議i加入集合A中;否則,放棄會議i,繼續檢查下一個會議,
演算法源代碼
設會議i的起始時間bi和結束時間ei的資料型別為自定義結構體型別struct time;
void GreedySelector(int n,struct time B[],struct time E[],bool A[])
> {
> int i,j;
> A[1]=true;
> j=1,i=2; //從會議i開始尋找與會議j相容的會議
> while(i<=n)
> {
> if(B[i]>=E[j]){A[i]=true;j=i;}
> else A[i]=false;
> }
> }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245763.html
標籤:其他
上一篇:【零基礎小白的華麗蛻變】SVN 1.14.0 下載及安裝(超簡單)
下一篇:鎖相環設計與MATLAB仿真
