![0-1背包問題的分支限界法源代碼_第1頁](http://file4.renrendoc.com/view/48b80391075c9b66395a07157c6f0cb4/48b80391075c9b66395a07157c6f0cb41.gif)
![0-1背包問題的分支限界法源代碼_第2頁](http://file4.renrendoc.com/view/48b80391075c9b66395a07157c6f0cb4/48b80391075c9b66395a07157c6f0cb42.gif)
![0-1背包問題的分支限界法源代碼_第3頁](http://file4.renrendoc.com/view/48b80391075c9b66395a07157c6f0cb4/48b80391075c9b66395a07157c6f0cb43.gif)
![0-1背包問題的分支限界法源代碼_第4頁](http://file4.renrendoc.com/view/48b80391075c9b66395a07157c6f0cb4/48b80391075c9b66395a07157c6f0cb44.gif)
![0-1背包問題的分支限界法源代碼_第5頁](http://file4.renrendoc.com/view/48b80391075c9b66395a07157c6f0cb4/48b80391075c9b66395a07157c6f0cb45.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/#includestdafx.h#include#include#include#includeusingnamespacestd;int*x;structnode結點表結點數據結構(node.parent;父結點指針node*next;后繼結點指針intlevel;結點的層intbag;節(jié)點的解intcw;當前背包裝載量intcp;當前背包價值floatub;結點的上界值;類Kn叩中的數據記錄解空間樹中的結點信息,以減少參數傳遞及遞歸調用所需的棧空間classKnap(private:structnode*front,隊列隊首*bestp,*first;解結點、根結點int*p,*w,n,
2、c,*M;背包價值、重量、物品數、背包容量、記錄大小順序關系longIbestp;背包容量最優(yōu)解public:voidSort();Knap(int*pp,int*ww,intccjntnn);Knap();floatBound(intijntcwjntcp);計算上界限node*nnoder(node*pa,intbajloatuub);生成一個結點ba=l生成左節(jié)點ba=0生成右節(jié)點voidaddnode(node*nod);向隊列中添加活結點voiddeletenode(node*nod);將結點從隊列中刪除structnode*nextnode();/取下一個節(jié)點voiddisplay
3、。;輸出結果voidsolvebag();背包問題求解);按物品單位重量的價值排序voidKnap:Sort()intijkkkl;floatmini;for(i=l;in;i+)minl=1.0*pi/wi;k=0;for(j=l;j=n-i;j+)if(minl1.0*pj/wj)minl=1.0*pj/wj;swap(pk/pj);swap(wk,wj);swap(Mk,Mj);k=j;)Knap:Knap(int*pp,int*ww,intccjntnn)(inti;n=nn;c=cc;p=newintn;w=newintn;M=newintn;for(i=0;inext=NULL;l
4、bestp=0;bestp=newnodel;bestp=NULL;Sort();)Knap:Knap()deletefront;deletebestp;deletep;deletew;)取上限最大結點node*Knap:nextnode()(node*p=front-next;front-next=p-next;return(p);將一個新的結點插入到子集樹和優(yōu)先隊列中node*Knap:nnoder(structnode*pa,intba,floatuub)生成一個新結點node*nodell=new(node);nodell-parent=pa;nodell-next=NULL;node
5、ll-level=(pa-level)+l;nodell-bag=ba;nodell-ub=uub;if(ba=l)nodell-cw=pa-cw+wpa-level;nodell-cp=pa-cp+ppa-level;elsenodell-cw=pa-cw;nodell-cp=pa-cp;return(nodell);將結點加入優(yōu)先隊列voidKnap:addnode(node*no)node*p=front-next/nextl=front;floatub=no-ub;while(p!=NULL)if(p-ubnext=p;nextl-next=no;break;nextl=p;p=p-n
6、ext;if(p=NULL)nextl-next=no;)/計算結點所相應價值的上界floatKnap:Bound(intijntcvintcp)(intcleft=c-cw;剩余容量floatb=(float)cp;價值上界以物品單位重量價值減序裝填剩余容量while(in&wi=cleft)cleft-=wi;b+=pi;i+;)裝填剩余容量裝滿背包if(in)b+=1.0*pi/wi*cleft;returnb;)計算最優(yōu)值和變量值voidKnap:display()(inti;coutendl;coutcv當前最優(yōu)價值為:=l;i-)xMi-l=bestp-bag;bestp=best
7、p-parent;cout變量值x=H;for(i=l;iparent=NULL;first-next=NULL;first-level=O;用level記錄結點的層first-cw=0;first-cp=O;first-bag=O;ubb=Bound(0,0,0);first-ub=ubb;front-next=first;while(front-next!=NULL)aa=nextnode();i=aa-level;當葉子節(jié)點處的解最優(yōu)解時,更新最優(yōu)解if(i=n-l)if(aa-cw+wicp+pi)lbestp)lbestp=aa-cp+pi;bestp=nnoder(aa,l,(fl
8、oat)lbestp);將一個新的結點插入到子集樹和優(yōu)先隊列中)if(long)(aa-cp)lbestp)lbestp=aa-cp;bestp=nnoder(aa,0,(float)lbestp);)非葉子結點,遞歸調用Bound函數計算上界if(aa-cw+wicw+wi,aa-cp+pi)(float)lbestp)ubb=Bound(i/aa-cw+wi/aa-cp+pi);addnode(nnoder(aa,l,ubb);將結點加入到優(yōu)先隊列中)ubb=ubb=Bound(i,aa-cw,aa-cp);if(ubblbestp)addnode(nnoder(aa,0,ubb);)display();)intmain()(intczn;inti=O;int*p;int*w;coutendl;coukv*11c分支限界法解0-1背包問題*”endl;coutendl;cout“請輸入物品數量n=;cinn;coutendl;cout”請輸入背包容量C=;cinc;coutendl;x=newintn;變量值p=newintn;物品價值w=newintn;物品重量8ut請分別輸入這個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 6 Unit 1 You have got a letter from New York(教學設計)-2024-2025學年外研版(三起)英語六年級上冊
- 2025年高性能傳輸線纜項目合作計劃書
- 滄州學校塑膠跑道施工方案
- 第三單元 物質構成的奧秘 課題2 原子的結構 教學設計-2024-2025學年九年級上學期化學(人教版2024)標簽標題
- 五年級下冊語文要素歸納
- Unit1 Whats he like(教學設計)五年級英語上冊同步備課系列人教PEP版·2024
- 2025年錢包、座套相關皮革制品項目合作計劃書
- 三年級數學因數中間或末尾有零的乘法自我檢測模擬題
- 三年級數學兩位數乘一位數計算題過關測試模擬題帶答案
- Unit 5 Here and now Section A 1a ~ pronunciation 教學設計 -2024-2025學年人教版(2024)七年級英語下冊
- 數學史簡介課件
- 八年級 下冊《黃河兩岸的歌(1)》課件
- 春季安全教育培訓課件
- T-CIAPS 0035-2024 儲能電池液冷散熱器
- 《ZN真空斷路器》課件
- 2024年低壓電工特種作業(yè)證考試題庫模擬考試及答案
- 《山東修繕交底培訓》課件
- 2024.8.1十七個崗位安全操作規(guī)程手冊(值得借鑒)
- 幼兒園大班音樂《歌唱春天》課件
- 2024年廣東省廣州市中考數學試卷含答案
- 電影《白日夢想家》課件
評論
0/150
提交評論