下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南科技學(xué)院實(shí)驗(yàn)報(bào)告系部數(shù)學(xué)與計(jì)算科學(xué)專業(yè)信息與計(jì)算科學(xué)成績(jī)?cè)u(píng)定班級(jí)信計(jì)0902班學(xué)號(hào)1姓名易丹課程名稱算法設(shè)計(jì)與分析實(shí)驗(yàn)時(shí)間2012.5.18實(shí)驗(yàn)編號(hào)實(shí)驗(yàn)四實(shí)驗(yàn)名稱回溯法實(shí)驗(yàn)環(huán)境D315、一臺(tái)電腦、Codeblocks10.05實(shí)驗(yàn)?zāi)康?. 理解回溯法的深度優(yōu)先搜索策略。2. 掌握用回溯法解題的算法框架。3. 掌握回溯法的設(shè)計(jì)策略。實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法 輸入、輸出、實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)結(jié)果分析)實(shí)驗(yàn)內(nèi)容: 1. 排兵布陣問(wèn)題某游戲中,不同的兵種處在不同的地形上其攻擊能力不一樣,現(xiàn)有n個(gè)不同兵種的角色1,2,.,n,需安排在某戰(zhàn)區(qū)n個(gè)點(diǎn)上,角色i在j點(diǎn)上的攻擊力為Aij。試設(shè)計(jì)一個(gè)布陣方
2、案,使總的攻擊力最大。數(shù)據(jù):防衛(wèi)點(diǎn)角色1234516040805060290608070203305040508049040307090560809060502. 0-1背包問(wèn)題(選做)編程實(shí)現(xiàn)0-1背包問(wèn)題的回溯算法。數(shù)據(jù)文件見(jiàn)附件。實(shí)驗(yàn)要求: 1. 實(shí)驗(yàn)報(bào)告只寫(xiě)實(shí)驗(yàn)。2. 寫(xiě)出算法思想、主要程序代碼、算法復(fù)雜性分析。實(shí)驗(yàn)(1)的步驟、算法及運(yùn)行結(jié)果: 1. 回溯法的總體思想回溯法的基本做法是搜索,或是一種組織得井井有條的,能避免不必要搜索的窮舉式搜索法。這種方法適用于解一些組合數(shù)相當(dāng)大的問(wèn)題。回溯法在問(wèn)題的解空間樹(shù)中,按深度優(yōu)先策略,從根結(jié)點(diǎn)出發(fā)搜索解空間樹(shù)。算法搜索至解空間樹(shù)的任意一點(diǎn)時(shí)
3、,先判斷該結(jié)點(diǎn)是否包含問(wèn)題的解。如果肯定不包含,則跳過(guò)對(duì)該結(jié)點(diǎn)為根的子樹(shù)的搜索,逐層向其祖先結(jié)點(diǎn)回溯;否則,進(jìn)入該子樹(shù),繼續(xù)按深度優(yōu)先策略搜索。2.回溯法的實(shí)現(xiàn)。打開(kāi)Codeblocks10.05,編輯頭文件Queue.h和主程序main.cpp,利用參考程序,同時(shí)還設(shè)計(jì)了從文件讀入數(shù)據(jù),使程序更清晰,其主要程序如下:Main.cpp#include #include #include #include #define INT_MAX 90using namespace std;template /交換兩個(gè)變量的值void Swap(Type &a,Type &b) Type t=b; b=a
4、; a=t;template /創(chuàng)建二維數(shù)組void TwoDimArray(Type* &p,int r,int c) p=new Type *r; for(int i=0; ir; i+) pi=new Typec; for(int i=0; ir; i+) for(int j=0; jc; j+) pij=0;template /輸出一維數(shù)組的元素void Print1(Type a,int n) for(int i=1; i=n; i+) coutai ; coutendl;templatevoid InputData2(T *M,int r,int c,char *filename)
5、 ifstream infile; infile.open(filename); /打開(kāi)文件 if(!infile) /測(cè)試是否已經(jīng)成功地打開(kāi)了文件 cerr文件打開(kāi)失?。ndl; exit(1); /結(jié)束程序 string s; for(int i=0; ir; +i) /讀取矩陣數(shù)據(jù) getline(infile,s); /讀一行 istringstream ss(s); /創(chuàng)建字符串流ss for(int j=0; jMij; /從流中讀取一個(gè)T類型的數(shù)賦給M class Flowshop friend int Flow(int *,int,int );private: void Ba
6、cktrack(int i); int *M; /各作業(yè)所需的處理時(shí)間 int *x; /當(dāng)前位置安排 int *bestx; /當(dāng)前最優(yōu)攻擊力 int *f2; /機(jī)器2完成處理時(shí)間 int f1; /機(jī)器1完成處理時(shí)間 int f; /當(dāng)前攻擊力 int bestf; /當(dāng)前最優(yōu)值 int n; /角色;void Flowshop:Backtrack(int i) if(in) int t=0; for(int i=1; ibestf) bestf=t; for(int j=1;j=n;j+) bestxj=xj; else for(int j=i; j=n; j+) /自i后,有i:n項(xiàng)
7、作業(yè) Swap(xi,xj); /xj成為第i個(gè)作業(yè) Backtrack(i+1); Swap(xi,xj); int Flow(int *M,int n,int bestx) Flowshop X; /初始X對(duì)象的數(shù)據(jù) X.x=new intn+1; X.f2=new intn+1; X.M=M; X.n=n; X.bestx=bestx; X.bestf=0; X.f1=0; X.f=0; for(int i=0; i=n; i+) X.f2i=0; X.xi=i; X.Backtrack(1); delete X.x; delete X.f2; return X.bestf;int ma
8、in() Flowshop X; int *M; int n; int *bestx; int bestf; TwoDimArray(M,5,5); X.x=new intn+1; X.M=M; X.n=n; X.bestx=new intn+1; X.bestf=0; int s=Flow(M,n,bestf); coutsendl; Print1(bestx,5); return 0;運(yùn)行結(jié)果:實(shí)驗(yàn)總結(jié)今天主要學(xué)的是回溯法,由于上一次實(shí)驗(yàn)老師要求我們從文件輸入數(shù)據(jù),因此這一次我同樣利用了該種方式,將矩陣中的數(shù)據(jù)仍從文件輸入,還挺好上手的,但是本該順暢的實(shí)驗(yàn)過(guò)程中卻出現(xiàn)了一個(gè)笨錯(cuò)誤,就是我的程序調(diào)試總是不正確,我還想著明明就和別人的差不多,不應(yīng)該啊但是別的同學(xué)都可以運(yùn)行了,我很糾結(jié),又反復(fù)看了很
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年云南冶金資源股份有限公司招聘?jìng)淇碱}庫(kù)及一套答案詳解
- 2026年華能內(nèi)蒙古東部能源有限公司招聘高校畢業(yè)生備考題庫(kù)及完整答案詳解一套
- 2026年成人商標(biāo)法考試高頻試題及答案
- 2026年環(huán)境影響評(píng)價(jià)工程師認(rèn)證考題含答案
- 2026年高考?xì)v史材料題信息提取方法含答案
- 2026年返鄉(xiāng)青年創(chuàng)業(yè)自測(cè)含答案
- 2026年勞動(dòng)保障監(jiān)察法律知識(shí)練習(xí)題及解析
- 2026年中國(guó)聯(lián)通成都秋招面試新業(yè)務(wù)推廣案例分析練習(xí)題及詳解
- 咯血患者的吸氧護(hù)理
- 2026年無(wú)縫氣瓶定期檢驗(yàn)試題含答案
- 水產(chǎn)總堿度總硬度課件
- 2025年山東省東營(yíng)市中考化學(xué)真題
- DB63-T 1382-2015 住宅工程質(zhì)量分戶驗(yàn)收規(guī)程
- 2026年跨境電商物流服務(wù)公司關(guān)聯(lián)交易審批管理制度
- 五年級(jí)上冊(cè)英語(yǔ)閱讀每日一練
- 【MOOC】《線性代數(shù)》(山東大學(xué))章節(jié)期末慕課答案
- 農(nóng)業(yè)生態(tài)種植技術(shù)標(biāo)準(zhǔn)操作規(guī)程
- 跌倒護(hù)理質(zhì)控分析及整改措施
- 骨盆的評(píng)估課件
- 急性胃炎課件
- DBJ∕T 15-182-2020 既有建筑混凝土結(jié)構(gòu)改造設(shè)計(jì)規(guī)范
評(píng)論
0/150
提交評(píng)論