




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、算法分析與設(shè)計實驗報告第 四 次實驗姓名學(xué)號班級時間10.17上午地點工訓(xùn)樓309 實驗名稱貪心算法實驗(求解背包問題)實驗?zāi)康耐ㄟ^上機實驗,要求掌握貪心算法的問題描述、算法設(shè)計思想、程序設(shè)計。實驗原理給定任意幾組數(shù)據(jù),利用貪心算法的思想,將物品裝入背包并使得其價值最大。程序思路:與0-1背包問題類似,所不同的是在選擇物品i裝入背包時,可以選擇物品i的一部分,而不一定要全部裝入背包,1in。(1) 首先將單位重量的平均價值排序。(2) 根據(jù)背包容量依次將平均價值高的物品放入背包中。實驗步驟(1)首先計算每種物品單位重量的價值vi/wi;(2)依貪心選擇策略,將盡可能多的單位重量價值最高的物品裝
2、入背包;(3)若將這種物品全部裝入背包后,背包內(nèi)的物品總重量未超過C,則選擇單位重量價值次高的物品并盡可能多地裝入背包;(4)依此策略一直地進(jìn)行下去,直到背包裝滿為止。關(guān)鍵代碼bool comparison(st a,st b) /自定義函數(shù)說明sort函數(shù)使用的模式是從大到小排序 return a.perval>b.perval; void Knapsack(int n,float m,st item,float x)int i;float temN; /該變量數(shù)組用來記錄排好序之后的物品是否被放入背包float tmpN; /定義一個數(shù)組用來保存以前的編號及重量,用于構(gòu)造最優(yōu)解for
3、(i=0;i<n;i+)tmpi=itemi.w;sort(item,item+n,comparison); /實現(xiàn)單位重量的平均價值的物品的排序for(i=0;i<n;i+) /初始化數(shù)組x及temxi=0,temi=0;float c=m;for(i=0;i<n;i+) /物品整件被裝下,則xi=1;if(itemi.w>c)break;temi=1;c-=itemi.w;if(i<n) /物品只有部分被裝下temi=c/itemi.w;for(i=0;i<n;i+) /將排好序的物品編號與原始編號匹配for(int j=0;j<n;j+) /構(gòu)造
4、最優(yōu)解if(itemi.w=tmpj)xj=temi;測試結(jié)果輸入較小的結(jié)果: 輸入較大的結(jié)果: 實驗心得首先這個實驗,需要注意的點是背包問題與0-1背包不同,物品可以部分的放入背包中,所以思路也不一樣,首先就是將物品按照單位質(zhì)量價值排序,只這一點就有一點難度。難度在于要是排序后物品的編號就會發(fā)生改變,輸出的就不是之前的編號的物品,導(dǎo)致錯誤,后來發(fā)現(xiàn)如果為每一個物品保存一個副本,然后將它們的編號進(jìn)行對比,就可以進(jìn)行正確的輸出了。其中這個實驗讓我學(xué)到了兩點:一是結(jié)構(gòu)體的使用,之前一直沒有怎么用過,現(xiàn)在才發(fā)現(xiàn)自己其實不會用;二十對于庫函數(shù)sort函數(shù)的使用。感覺每一次實驗都有學(xué)到東西,很開心。實驗
5、得分助教簽名附錄:完整代碼(貪心法)/貪心算法 背包問題#include<iostream>#include<algorithm>#include<time.h>#include<iomanip>using namespace std;const int N=10000;struct st /定義結(jié)構(gòu)體,用來存放和物品相關(guān)的變量float v;float w;float perval;void Knapsack(int n,float m,st item,float x); /聲明貪心算法求解問題函數(shù)int main()float m; int
6、n,i;cout<<"請輸入背包的容量:"cin>>m;cout<<"請輸入物品的個數(shù):"cin>>n;st itemN; float xN+1;cout<<"待裝物品的重量為:"<<endl;for(i=0;i<n;i+)cin>>itemi.w;cout<<endl;cout<<"待裝物品的價值為:"<<endl;for(i=0;i<n;i+)cin>>itemi.v;
7、cout<<endl;/計算每一個物品的單位重量的價值for(i=0;i<n;i+)itemi.perval=itemi.v/itemi.w;clock_t start,end,over; /計算程序運行時間的算法start=clock();end=clock();over=end-start;start=clock(); Knapsack(n,m,item,x); /調(diào)用貪心算法函數(shù)cout<<"選?擇?裝Á¡ã下?的Ì?物?品¡¤的Ì?比À¨¨例
8、64;y如¨?下?:êo"<<endl; /輸出最優(yōu)解編號及比例for(i=0;i<n;i+)cout<<""<<i+1<<":"<<xi<<endl;end=clock();printf("The time is %6.3f",(double)(end-start-over)/CLK_TCK); /顯示運行時間system("pause");return 0; bool comparison(st a,st
9、 b)/自定義函數(shù)說明sort函數(shù)使用的形式是從大到小排序 return a.perval>b.perval; void Knapsack(int n,float m,st item,float x)int i;float temN; /該變量數(shù)組用來記錄排好序之后的物品是否被放入背包float tmpN; /定義一個數(shù)組用來保存以前的編號及重量,用于構(gòu)造最優(yōu)解for(i=0;i<n;i+)tmpi=itemi.w;sort(item,item+n,comparison); /實現(xiàn)單位重量的平均價值的物品的排序for(i=0;i<n;i+) /初始化數(shù)組x及temxi=0,temi=0;float c=m;for(i=0;i<n;i+) /物品整件被裝下,則xi=1;if(itemi.w>c)brea
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南2025年01月2025年河南新鄉(xiāng)市市直機關(guān)遴選公務(wù)員12人國家公務(wù)員考試消息筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 足療店日常清潔與消毒工作指南
- 跨界創(chuàng)新與未來職業(yè)發(fā)展探索
- 5.1走向世界大舞臺課件- -2024-2025學(xué)年統(tǒng)編版道德與法治九年級下冊
- 內(nèi)蒙古大學(xué)《嵌入式控制系統(tǒng)及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 清苑縣2025年三年級數(shù)學(xué)第二學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 昆明城市學(xué)院《建筑環(huán)境與能源系統(tǒng)測試技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧鐵道職業(yè)技術(shù)學(xué)院《法律英語寫作與翻譯》2023-2024學(xué)年第二學(xué)期期末試卷
- 足療店內(nèi)容營銷策略與創(chuàng)作方法
- 系統(tǒng)日志記錄與分析規(guī)范
- 工程分包計劃(完整版)
- Q∕GDW 12068-2020 輸電線路通道智能監(jiān)拍裝置技術(shù)規(guī)范
- CIR操作指南(20110513)
- 領(lǐng)導(dǎo)力培訓(xùn)領(lǐng)導(dǎo)力提升培訓(xùn)領(lǐng)導(dǎo)力培訓(xùn)
- 制藥工程 專業(yè)英語 Unit 1(課堂PPT)
- 俞敏洪四級詞匯詞根聯(lián)想記憶法亂序wordlist
- 第四次工業(yè)革命ppt課件
- 公路工程試驗常規(guī)檢測項目、檢測標(biāo)準(zhǔn)、檢測頻率、取樣方法(標(biāo)準(zhǔn)版)
- 圖解調(diào)音臺使用說明(共14頁)
- 員工人事檔案登記表(最終版)
- 服裝測量方法及圖示
評論
0/150
提交評論