版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作結(jié)果:若棧不為空,用 e返回棧頂元素,并刪除棧頂元素©拴專年人字址億git£rtjufy,fetiiin"Wnmrbfirfifrwnidll«lK«mnuvKortMn»i數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)迷宮問題實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)二專業(yè):物聯(lián)網(wǎng)工程班級(jí):物聯(lián)網(wǎng)1班學(xué)號(hào):姓名:劉沛航實(shí)驗(yàn)?zāi)康谋境绦蚴抢梅沁f歸的方法求出一條走出迷宮的路徑,并將路徑輸出。首先由用戶輸入一組二維數(shù)組來組成迷宮,確認(rèn)后程序自動(dòng)運(yùn)行,當(dāng)迷宮有完整路徑可以通過時(shí),以。和1所組成的迷宮形式輸出,標(biāo)記所走過的路徑結(jié)束程序;當(dāng)迷宮無路徑時(shí),提示輸入錯(cuò)誤結(jié)束程序。二、實(shí)驗(yàn)內(nèi)容用一個(gè)m*
2、m長方陣表示迷宮,。和1分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序?qū)τ谌我庠O(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。三、程序設(shè)計(jì)1、概要設(shè)計(jì)(1)設(shè)定棧的抽象數(shù)據(jù)類型定義ADTStack數(shù)據(jù)對(duì)象:D=aiai屬于CharSet,i=l>2n,n>=0)數(shù)據(jù)關(guān)系:R=<ai-1,ai>ai-1,ai屬于D,i=2,3,n基本操作:InitStack(&S)操作結(jié)果:構(gòu)造一個(gè)空棧Push(&S,e)初始條件:棧已經(jīng)存在操作結(jié)果:將e所指向的數(shù)據(jù)加入到棧s中Pop(&S,&e)初始條件:棧已經(jīng)存在Getpop(&S,&
3、amp;e)初始條件:棧已經(jīng)存在操作結(jié)果:若棧不為空,用e返回棧頂元StackEmpty(&S)初始條件:棧已經(jīng)存在操作結(jié)果:判斷棧是否為空。若棧為空,返回1,否則返回0Destroy(&S)初始條件:棧已經(jīng)存在操作結(jié)果:銷毀棧sADTStack(2)設(shè)定迷宮的抽象數(shù)據(jù)類型定義ADTyanshu數(shù)據(jù)對(duì)象:D=ai,j|ai,j屬于、',0<=i<=M,0<=j<=N數(shù)據(jù)關(guān)系:R=ROW,COLR0W=<ai-l,j,ai,j>|ai-l,j,ai,j屬于D,i=l,2,M,j=0,1,NC0L=<ai,j-1,ai,j>|
4、ai,j-1,ai,j屬于D,i=0,1,Mj=l,2,N基本操作:InitMaze(MazeType&maze,intaCOL,introw,intcol)初始條件:二維數(shù)組intaCOL,已經(jīng)存在,其中第1至第行,每行自第1到第n-l列的元素已經(jīng)值,并以值0表示障礙,值1表示通路。操作結(jié)果:構(gòu)造迷宮的整形數(shù)組,以空白表示通路,字符'表示障礙在迷宮四周加上一圈障礙MazePath(Amaze)初始條件:迷宮maze已被賦值操作結(jié)果:若迷宮maze中存在一條通路,則按如下規(guī)定改變Getpop(&S,&e)maze的狀態(tài);以字符,*,表示路徑上的位置。字符,0表示
5、,死胡同;否則迷宮的狀態(tài)不變PrintMaze(M)初始條件:迷宮M已存在操作結(jié)果:以字符形式輸出迷宮)ADTmaze(3)本程序包括三個(gè)模塊a、主程序模塊voidmain()初始化;構(gòu)造迷宮;迷宮求解;迷宮輸出;)b、棧模塊一一實(shí)現(xiàn)棧的抽象數(shù)據(jù)類型C、迷宮模塊一一實(shí)現(xiàn)迷宮的抽象數(shù)據(jù)類型2、詳細(xì)設(shè)計(jì)(1)坐標(biāo)位置類型:typedefstructintrow;.的列P°sType先呢,想自己讀入數(shù)據(jù)的,回來發(fā)現(xiàn)那樣,很麻煩,所以還是事先定義一個(gè)迷宮。2 .棧的元素類型一開始有點(diǎn)迷惑,后來就解決了3 .本題中三個(gè)主要算法;InitMaze,MazePath和PrintMaze的時(shí)間復(fù)雜度
6、均為0(m*n)本題的空間復(fù)雜度也是0(ni*n)清輻入迷宮的Hk初微增布卜慘儲(chǔ)懺格隔H). 3涉夜或皆到£注全:- Xi.建立迷宮:2 .通過1功能建立8水8的迷宮后,通過2功能繼續(xù)建立迷宮內(nèi)部:PWSERSXPEKAPDESfCJQG 中烹。ebuglMazaexb244342364 k3L O246 b7r- o35五、用戶使用說明1.本程序運(yùn)行在windows系列的操作系統(tǒng)下,執(zhí)行文件為:。六、程序運(yùn)行結(jié)果n昔A人建言河丁射|夕怯?2清人迷m內(nèi)暗單兒赦2迷自結(jié)構(gòu)如下臉入迷宮的血點(diǎn)/-1.511r出結(jié)臬o退出'GAU5ER5PEKAI-n.DfSlt-fDcbug
7、9;Maze.cxc'-XRf暮林*工口tx*富富押|&壬兩5拐.潢沛IW杠工迄事*沖c富士*1請(qǐng)轍a宮的醵,婕刃青輸入迷宮內(nèi)墻單元數(shù)宮蹴如下瑚人迷宮的3和終點(diǎn)踹出結(jié)果磋出精選俾2詩輸人述目內(nèi)雷金兀熟10話低枚輔人此旨n堆樂卜單元?jiǎng)ヘ【土邪欁箬袅_:愉越拼音軸人法分;通過建立自己設(shè)定單元數(shù)目建立迷宮內(nèi)墻。3 通過3功能觀察已建立的迷宮結(jié)構(gòu):lCMJSERSPEKAHDESKTOFM2文沖知DcbuglMa.exe'-Xty/卜八,mttt序瞞區(qū)BJE17011:刻沛醺*m*"八1mrt:請(qǐng)帶人建宮的廳曲列數(shù)乖符人迷言刁培單元數(shù)3迷宮結(jié)砌如下南人迷'言的
8、起點(diǎn)和終盛5金出結(jié)果。退出u o« o o o o n0 0 0 0 0防航窿之的建言u(píng) 1L 1x AV 11O 1 O 1 O0 01 00 01 00 01 01 00 0定義墻元君值為q可通過路徑為LW拉拼音新法全:S1T4 通過4功能確立迷宮起點(diǎn)和終點(diǎn):(此處像我們隨機(jī)選擇4,4和2,7分別為起點(diǎn)終點(diǎn))TMJRJEKAHkPESKTOP.JtXPtljuflWazrjeKe,澹輸小事宜的行敢列數(shù)2請(qǐng)輸入講盲內(nèi)埼阜廠抑卷恂如下嫌人迷宮的起點(diǎn)和線點(diǎn)瞬I出結(jié)卑嗡出謹(jǐn)型軍4請(qǐng)搐人起點(diǎn)的荷毀列觸請(qǐng)箍A撰點(diǎn)的彳亍覿列熱5執(zhí)行5功能,判斷是否有路徑走出迷宮:九其丈尊富心龍4富砂富草*鼻珀
9、*|(土c*鼻塞軸護(hù)匚剛及耳1518011g勿沛百丁席皿*4*桿4事蟬事事事一常就常昌卻1請(qǐng)輸入譯宜的行教力法2請(qǐng)翰心帶有內(nèi)垢阜廠曲卷恂如下婚商人迷宮的起點(diǎn)和終點(diǎn)瞄出結(jié)甲嗡出脫揮5也讓手殳肓從人口到出TI的斑良謝激彳復(fù)用劉恥世卷序愉X退注肚越拼音輸A壅全:這種情況無法走出迷宮。我們?cè)俅斡^察圖像設(shè)4,4和1,6分別為起點(diǎn)終點(diǎn),再運(yùn)行5功能1P卻JSERSIPEKAHIPES燈。:諸建立件卻gbuq,.M丑樂珈才一口X中首鏟時(shí)亨皆存中的Hn+r宣|耳黃1|耶-巧邙。1L呂劉帝亍航十畬才申巧什曾叫i甘桿尸忡想沖申齊1請(qǐng)輸入迷宮潮亍致歹1黃時(shí)輸入趁宮內(nèi)墻單元甑制有亡構(gòu)劃-曲人注宮的起點(diǎn)和棘點(diǎn)5輸出純蠱
10、濾出遣逛擇-1情輸入起蔬的廳敘理撩(交儡4+廠14青輸入絡(luò)點(diǎn)BW縱列勖佐榕隔開L(;:二匕,二工C:二二,秀辛一二:二U二U:;丫3二:?Y'3X151EO11F劉沛沉二請(qǐng)輸入運(yùn)頷!行數(shù),貓2請(qǐng)朝人運(yùn)富力精單元數(shù)3法宮結(jié)構(gòu)加不砸入迷者的仙fe和終點(diǎn)司輸出結(jié)果調(diào)出帕W吉從入口到匚口的T芮金如下,謝詫使幫麻抗生程序0 C c 0 0 0014111000150n-10 ie01710101100 I fl II0 «觀察到可以成功解開迷宮步數(shù)從1依次開始七、程序清單#includeO#includeOttincludeO#includeOase=(SElemType*)mallo
11、c(STACK_INIT_SIZE*sizeof(SElemType);if(!(*S).base)exit(0);(*S).top=(*S).base;tacksize=STACK_INIT_SIZE;return1;op-(*S).base>=(*S).stacksize)ase=(SElemType*)realloc(*S).base,(*S).stacksize+STACKINCREMENT)*sizeof(SElemType);if(!(*S).base)exit(O);(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+二STAC
12、KINCREMENT;)*(*S).top)+=e;return1;op=(*S).base)return0;*e=*一一(*S).top;+二direcdi.y;returnc;/使迷宮m的b點(diǎn)的序號(hào)變?yōu)?1(不能通過的路徑)voidMarkPrint(PosTypeb)(m/若迷宮maze中存在從入口start到出口end的通道,則求得一條/存放在棧中(從棧底到棧頂),并返回1:否則返回0intMazePath(PosTypestart,PosTypeend)(SqStackS;PosTypecurpos;SElemTypee;InitStack(&S);curpos=start;
13、do(if(Pass(curpos)/當(dāng)前位置可以通過,即是未曾走到過的通道塊Footprint(curpos);/留下足跡=curstep;Push(&S,e);/入棧當(dāng)前位置及狀態(tài)curstep+;/足跡加1/到達(dá)終點(diǎn)(出口)return1;curpos=NextPos(curpos,;else/當(dāng)前位置不能通過if(!StackEmpty(S)Pop(&S,&e);/退棧到前一位置curstep;while=3&&!StackEmpty(S)/前一位置處J,最后一個(gè)方向MarkPrint;留F不能通過的標(biāo)記(-1)Pop(&S,&e
14、);退回一步curstep;if<3)/沒到最后一個(gè)方向(北)+;換下一個(gè)方向探索Push(&S,e);curstep+;/設(shè)定當(dāng)前位置是該新方向上的相鄰塊curpos=NextPos,;while(!StackEmpty(S);return0;/輸出迷宮的結(jié)構(gòu)voidPrint(intx,inty)inti,jfor(i=0;i<x;i+)(for(j=0;j<y;j+)printfC%3d",mij);printf(n);voidmain()PosTypebegin,end;inti,j,x,y,xl,yl,n,k;dosystem(cls")
15、;/清屏函數(shù)printf* *求水nnn);printf(z,printf(z,printf("printf("printf("printf(z,printf Cnn 請(qǐng)選擇");scanf("%d", &n);劉沛航1請(qǐng)輸入迷宮的行數(shù),列數(shù)n);2請(qǐng)輸入迷宮內(nèi)墻單元數(shù)n);3迷宮結(jié)構(gòu)如下n");4輸入迷宮的起點(diǎn)和終點(diǎn)n);5輸出結(jié)果n);0退出n);switch(n)case1:printf(請(qǐng)輸入迷宮的行數(shù),列數(shù)(包括外墻):(空格隔開);scanf("%d%d,&x,&y);for(i
16、=0;i<x;i+)/定義周邊值為0(同墻)(m0i>0;/迷宮上面行的周邊即上邊墻mx-li=0;/迷宮下面行的周邊即下邊墻for(j=l;j<y-l;j+)mjO=O;/迷宮左邊列的周邊即左邊墻mjy-l=O;/迷宮右邊列的周邊即右邊墻for(i=l;i<x-l;i+)for(j=l;j<y-l;j+)mij=l;/定義通道初值為1break;case2:printf(請(qǐng)輸入迷宮內(nèi)墻單元數(shù):);scanf(d”,&j);printfC請(qǐng)依次輸入迷宮內(nèi)墻每個(gè)單元的行數(shù),列數(shù):(空格隔開八n);for(i=l;i<=j;i+)scanf(“%d%d,&xl,&yl);mxlyl=0;)break;case3:Print(x,y);printfC劉沛航建立的迷宮,定義墻元素值為0,可通過路徑為匕輸入0退出");scanf("%d",&k);break;case4:printf(請(qǐng)輸入起點(diǎn)的行數(shù),列數(shù):(空格隔開)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年綠色生態(tài)建筑農(nóng)民工勞動(dòng)合同示范3篇
- 二零二五年度防盜門行業(yè)市場分析報(bào)告合同2篇
- 二零二五版加油站智能監(jiān)控與數(shù)據(jù)分析合同3篇
- 二零二五白云區(qū)觀白活力中心房地產(chǎn)合作開發(fā)投資框架合同2篇
- 二零二五年度智能家電產(chǎn)品研發(fā)與銷售合同3篇
- 二零二五版養(yǎng)殖企業(yè)與個(gè)體養(yǎng)牛戶合作合同3篇
- 二零二五版數(shù)據(jù)中心機(jī)房租賃及數(shù)據(jù)備份服務(wù)合同2篇
- 基于2025年度5G網(wǎng)絡(luò)技術(shù)研發(fā)合作合同2篇
- 二零二五版拌和站產(chǎn)品質(zhì)量追溯與售后服務(wù)合同2篇
- 二零二五版建筑工程土方中介合同糾紛調(diào)解機(jī)制3篇
- 物業(yè)費(fèi)收取協(xié)議書模板
- 電工(中級(jí)工)理論知識(shí)練習(xí)題(附參考答案)
- 工業(yè)設(shè)計(jì)概論試題
- 2024-2030年中國商務(wù)服務(wù)行業(yè)市場現(xiàn)狀調(diào)查及投資前景研判報(bào)告
- 起重機(jī)的維護(hù)保養(yǎng)要求與月度、年度檢查記錄表
- 消防設(shè)施維護(hù)保養(yǎng)記錄表
- 城區(qū)生活垃圾填埋場封場項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 垃圾分類巡檢督導(dǎo)方案
- 大一護(hù)理生涯發(fā)展展示
- 五年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題100題及答案
- 新生兒急救與復(fù)蘇培訓(xùn)
評(píng)論
0/150
提交評(píng)論