貪心算法的應(yīng)用實(shí)例.doc

貪心算法的應(yīng)用實(shí)例.doc

ID:50434848

大?。?8.00 KB

頁數(shù):8頁

時間:2020-03-09

貪心算法的應(yīng)用實(shí)例.doc_第1頁
貪心算法的應(yīng)用實(shí)例.doc_第2頁
貪心算法的應(yīng)用實(shí)例.doc_第3頁
貪心算法的應(yīng)用實(shí)例.doc_第4頁
貪心算法的應(yīng)用實(shí)例.doc_第5頁
資源描述:

《貪心算法的應(yīng)用實(shí)例.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、貪心算法的應(yīng)用實(shí)例例2.排隊(duì)問題【題目描述】在一個醫(yī)院B超室,有n個人要做不同身體部位的B超,已知每個人需要處理的時間為ti,(0

2、k之后的人無影響,對sk之前的人等待都減少了,(s1-sk)>0,從而新的序列比原最優(yōu)序列好,這與假設(shè)矛盾,故s1為最小時間,同理可證s2…sn依次最小。例3.:數(shù)列極差問題【題目描述】在黑板上寫了N個正整數(shù)做成的一個數(shù)列,進(jìn)行如下操作:每一次擦去其中的兩個數(shù)a和b,然后在數(shù)列中加入一個數(shù)a×b+1,如此下去直至黑板上剩下一個數(shù),在所有按這種操作方式最后得到的數(shù)中,最大的max,最小的為min,則該數(shù)列的極差定義為M=max-min。編程任務(wù):對于給定的數(shù)列,編程計(jì)算出極差M。輸入輸出樣例:輸入:42143輸出:13【算法分析】當(dāng)看到此題時,我們會發(fā)現(xiàn)求max與求min是兩

3、個相似的過程。若我們把求解max與min的過程分開,著重探討求max的問題。下面我們以求max為例來討論此題用貪心策略求解的合理性。討論:假設(shè)經(jīng)(N-3)次變換后得到3個數(shù):a,b,max'(max'≥a≥b),其中max'是(N-2)個數(shù)經(jīng)(N-3)次f變換后所得的最大值,此時有兩種求值方式,設(shè)其所求值分別為z1,z2,則有:z1=(a×b+1)×max'+1,z2=(a×max'+1)×b+1所以z1-z2=max'-b≥0若經(jīng)(N-2)次變換后所得的3個數(shù)為:m,a,b(m≥a≥b)且m不為(N-2)次變換后的最大值,即m<max'則此時所求得的最大值為:z3=(a×

4、b+1)×m+1此時z1-z3=(1+ab)(max'-m)>0 所以此時不為最優(yōu)解。所以若使第k(1≤k≤N-1)次變換后所得值最大,必使(k-1)次變換后所得值最大(符合貪心策略的特點(diǎn)2),在進(jìn)行第k次變換時,只需取在進(jìn)行(k-1)次變換后所得數(shù)列中的兩最小數(shù)p,q施加f操作:p←p×q+1,q←∞即可(符合貪心策略特點(diǎn)1),因此此題可用貪心策略求解。在求min時,我們只需在每次變換的數(shù)列中找到兩個最大數(shù)p,q施加作用f:p←p×q+1,q←-∞即可.原理同上。這是一道兩次運(yùn)用貪心策略解決的一道問題,它要求選手有較高的數(shù)學(xué)推理能力。例4.整數(shù)區(qū)間range.cpp【題目

5、描述】我們定義一個整數(shù)區(qū)間[a,b],a,b是一個從a開始至b結(jié)束的連續(xù)整數(shù)的集合。編一個程序,對給定的n個區(qū)間,找出滿足下述條件的所含元素個數(shù)最少的集合中元素的個數(shù):對于所給定的每一個區(qū)間,都至少有兩個不同的整數(shù)屬于該集合。(1<=n<=10000,0<=a<=b<=1000)輸入輸出格式:輸入:第一行一個正整數(shù)n,接下來有n行,每行給定一個區(qū)間的a,b值輸出:一個正整數(shù),即滿足條件的集合所包含的最少元素個數(shù)輸入輸出樣例輸入:輸出:4436240247【算法分析】本題數(shù)據(jù)規(guī)模較大,用搜索做會超時,而動態(tài)規(guī)劃無從下手。考慮貪心算法。題目意思是要找一個集合,該集合中的數(shù)的個數(shù)

6、既要少又要和所給定的所有區(qū)間有交集。(每個區(qū)間至少有兩個該集合中的數(shù))。我們可以從所給的區(qū)間中選數(shù),為了選盡量少的數(shù),應(yīng)該使所選的數(shù)和更多的區(qū)間有交集這就是貪心的標(biāo)準(zhǔn)。一開始將所有區(qū)間按照右端點(diǎn)從小到大排序。從第一個區(qū)間開始逐個向后檢查,看所選出的數(shù)與所查看的區(qū)間有無交集,有兩個則跳過,只有一個數(shù)相交,就從當(dāng)前區(qū)間中選出最大的一個數(shù)(即右端點(diǎn)),若無交集,則從當(dāng)前區(qū)間選出兩個數(shù),就(右端點(diǎn),右端點(diǎn)-1),直至最后一個區(qū)間。#include//整數(shù)區(qū)間問題usingnamespacestd;structprince{intleft,right;//區(qū)間左右

7、端點(diǎn)}a[10000];intn;intresult;//存放結(jié)果中的數(shù)intcmp(constvoid*a,constvoid*b){return(*(prince*)a).right-(*(prince*)b).right;}intwork(){qsort(a+1,n,sizeof(a[0]),cmp);//按區(qū)間右端點(diǎn)由小到大排序inti,j,k;inta1,a2;a1=a[1].right-1;a2=a[1].right;result=2;for(i=2;i<=n;i++){if(a[i].left<=a1

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。