C++超詳細講解貪心策略的設(shè)計及解決會場安排問題_第1頁
C++超詳細講解貪心策略的設(shè)計及解決會場安排問題_第2頁
C++超詳細講解貪心策略的設(shè)計及解決會場安排問題_第3頁
C++超詳細講解貪心策略的設(shè)計及解決會場安排問題_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C++超詳細講解貪心策略的設(shè)計及解決會場安排問題目錄問題描述貪心策略算法設(shè)計代碼實現(xiàn)選擇結(jié)構(gòu)體隨機輸入會議按結(jié)束時間排序最終會議確定結(jié)束語

問題描述

設(shè)有n個會議的集合C={1,2,,n},其中每個會議都要求使用同一個資源(如會議室),而在同一時間內(nèi)只能有一個會議使用該資源。每個會議i都有要求使用該資源的起始時間bi和結(jié)束時間ei,且biei。如果選擇了會議i使用會議室,則它在半開區(qū)間[bi,ei)內(nèi)占用該資源。如果[bi,ei)與[bj,ej)不相交,則稱會議i與會議j是相容的。會場安排問題要求在所給的會議集合中選出最大的相容活動子集,也即盡可能地選擇更多的會議來使用資源。

貪心策略

1、選擇最早開始時間且不與已安排會議重疊的會議

2、選擇使用時間最短且不與已安排會議重疊的會議

3、選擇具有最早結(jié)束時間且不與已安排會議重疊的會議

這里我選取第三種方法

算法設(shè)計

設(shè)有11個會議等待安排,用貪心法找出滿足目標(biāo)要求的會議集合。這些會議按結(jié)束時間的非減序排列如表所示

11個會議按結(jié)束時間的非減序排列表:

代碼實現(xiàn)

#includeiostream

#include"會場安排.h"

#definen11

structmeeting{

intB;//開始時間

intE;//結(jié)束時間

usingnamespacestd;

intmain()

meetingM[n]={{8,11},{8,12},{2,13},{12,14},{1,4},

{3,5},{0,6},{5,7},{3,8},{5,9},{6,10}};

for(inti=0;ii++)

for(intj=0;jn-i-1;j++)

if(M[j].EM[j+1].E){

meetingT;

T=M[j];M[j]=M[j+1];M[j+1]=T;

intallowedTime=0;

for(inti=0,j=0;ii++){

if(M[i].BallowedTime){

j++;

cout"安排的第"j"個會議號是"i+1"此會議開始時間為:"M[i].B

"此會議結(jié)束時間是:"M[i].Eendl;

allowedTime=M[i].E;

}

選擇結(jié)構(gòu)體

定義meeting結(jié)構(gòu)體,只設(shè)置會議開始時間B和結(jié)束時間E即可。

隨機輸入會議

n為11

meetingM[n]={{8,11},{8,12},{2,13},{12,14},{1,4},

{3,5},{0,6},{5,7},{3,8},{5,9},{6,10}};

按結(jié)束時間排序

冒泡排序?qū)崿F(xiàn)即可:

for(inti=0;ii++)

for(intj=0;jn-i-1;j++)if(M[j].EM[j+1].E)

{

meetingT;T=M[j];M[j]=M[j+1];M[j+1]=T;

}

這里的中間變量必須設(shè)置為meeting類型,以便于將會議的所有屬性都交換

最終會議確定

intallowedTime=0;

for(inti=0,j=0;ii++){

if(M[i].BallowedTime){

j++;

cout安排的第j個會議號是i+1此會議開始時間為:M[i].B

此會議結(jié)束時間是:M[i].Eendl;

allowedTime=M[i].E;

}

}

先將會議開始時間設(shè)置為0,只要把按結(jié)束時間升序排列的第一個大于0的開始時間加到第一個內(nèi)容哦即可,隨后將第一個會議的結(jié)束時間設(shè)置為allowedTime,產(chǎn)生下一個不與第一個會議時間沖突的會議;然后自己加點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論