版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、貪心算法: #include #define max 100 / 最多物品數(shù) void sort (int n,float amax,float bmax) / 按價值密度排序 int j,h,k; float t1,t2,t3,cmax; for(k=0;kn;k+) ck=ak/bk; for(j=0;jn;j+) if(cjcj+1) t1=aj;aj=aj+1;aj+1=t1; t2=bj;bj=bj+1;bj+1=t2; t3=cj;cj=cj+1;cj+1=t3; void knapsack(int n,float limitw,float vmax,float wmax,int
2、xmax) float c1; /c1 為背包剩余可裝載重量 int i; sort(n,v,w); / 物品按價值密度排序 c1=limitw; for(i=0;ic1)break; xi=1; xi為1時,物品i在解中 c1=c1-wi; void main() int n,i,xmax; float vmax,wmax,totalv=0,totalw=0,limitw; cout請輸入 n 和 limitw:; cinn limitw; for(i=1;i=n;i+) xi=0; / 物品選擇情況表初始化為 0 coutvv請依次輸入物品的價值:e ndl; for(i=1;ivi; c
3、outendl; coutvv請依次輸入物品的重量:vve ndl; for(i=1;iwi; 2 / 15 couxAend-八 knapsackp-imifwMWxx couxAThe se-eaon is= fo(iMAHnT+) 宀 OO / 求最小值函數(shù) int min(int x,int y) return x= y ? y:x; void Knaspack() int Max=min(wn-1,W); for(int j=1; j = Max ; j+) Vnj=0; for(j=wn; j 1 ; i-) Max=min(wi-1,W); for( j=1; j = Max ;
4、 j+) Vij=Vi+1j; for( j=wi; j w1) V1W=max(V1W,V2W-w1+v1); / 生成向量數(shù)組,決定某一個物品是否應(yīng)該放入背包 void Traceback() for(int i=1; i nW; coutvv輸入每件商品的重量w:vendl; for(int i=1;iwi; memset(V,0,sizeof(V); coutvv輸入每件商品的價值v:vvi; Knaspack();構(gòu)造矩陣 Traceback(); /求出解的向量數(shù)組 int totalW=0; int totalV=0; / 顯示可以放入的物品 coutvv所選擇的商品如下:end
5、l; coutvv序號 i:重量 w:價格 V:vvendl; for(i=1; i = n ; i+) if(besti = 1) totalW+=wi; totalV+=vi; coutsetiosflags(ios:left)setw(5)i coutvv放入的物品重量總和是:vvtotalWvv totalV using namespace std; class Knap friend int Knapsack(int p,int w,int c,int n ); public: void print() for(int m=1;m=n;m+) coutbestxm ; coutend
6、l; ; private: int Bound(int i); void Backtrack(int i); int c;/ 背包容量 int n; / 物品數(shù) int *w;/ 物品重量數(shù)組 int *p;/ 物品價值數(shù)組 int cw;/ 當前重量 int cp;/ 當前價值 int bestp;/ 當前最優(yōu)值 int *bestx;/ 當前最優(yōu)解 int *x;/ 當前解 ; int Knap:Bound(int i) / 計算上界 int cleft=c-cw;/ 剩余容量 int b=cp; / 以物品單位重量價值遞減序裝入物品 while(i=n b+=pi; i+; / 裝滿背包
7、 if(in) if(bestp WRW*1 (*V=T+Mg 七 宀 cn05 宀 -cbudls q sXHmxls q (+ruHvrL4UD04 class Object friend int Knapsack(int p,int w,int c,int n); public: int operator=a.d); private: int ID; float d; ; int Knapsack(int p,int w,int c,int n) / 為 Knap:Backtrack初始化 int W=0; int P=0; int i=1; Object *Q=new Objectn;
8、 for(i=1;i=n;i+) Qi-1.ID=i; Qi-1.d=1.0*pi/wi; P+=pi; W+=wi; if(W=c) return P;/ 裝入所有物品 / 依物品單位重量排序 float f; for( i=0;in;i+) for(int j=i;jn;j+) if(Qi.dQj.d) f=Qi.d; Qi.d=Qj.d; Qj.d=f; Knap K; K.p = new intn+1; K.w = new intn+1; K.x = new intn+1; K.bestx = new intn+1; K.x0=0; K.bestx0=0; for( i=1;ic; coutvv請輸入物品的個數(shù)(n): n; p=new intn+1; w=new intn+1; p0=0; w0=0; coutvv請輸入物品的價值(p): endl; for(i=1;ipi; cout 請輸入物品的重量
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024秋八年級英語上冊 Unit 10 If you go to the party you'll have a great time Section B (2a-2e)教案(新版)人教新目標版
- 2023七年級歷史下冊 第二單元 遼宋夏金元時期:民族關(guān)系發(fā)展和社會變化第8課 金與南宋的對峙說課稿 新人教版
- 喜達屋酒店內(nèi)部員工管理制度
- 高考地理一輪復習第一章地球與地圖第一節(jié)經(jīng)緯網(wǎng)和地圖課件
- 自營業(yè)務(wù)外包合同(2篇)
- 腦卒中相關(guān)課件
- 布紋個性簡歷幻燈片模板
- 西京學院《應(yīng)用統(tǒng)計學》2022-2023學年第一學期期末試卷
- 西京學院《家具設(shè)計》2023-2024學年第一學期期末試卷
- 西京學院《發(fā)電廠電氣系統(tǒng)》2022-2023學年期末試卷
- 05 03 第五章第三節(jié) 投身崇德向善的道德實踐
- 安徽省合肥市第四十五中學2022-2023學年九年級上學期數(shù)學期中考試卷
- 樁基礎(chǔ)工程施工組織方案
- 供水運營管理實施方案(4篇)
- 水土保持工程質(zhì)量評定表
- 美術(shù) 莫奈課件
- 水電站基本構(gòu)造原理與類型ppt版(共67)
- 秦朝統(tǒng)一PPT課件教學
- 譯林版(三起)五年級上冊英語課件:Unit6 My e-friend Cartoon time(共24張PPT)
- 《民族團結(jié)》- 完整版課件
- 醫(yī)院 交班站位圖
評論
0/150
提交評論