版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作結(jié)果:若棧不為空,用 e返回棧頂元素,并刪除棧頂元素©拴專年人字址億git£rtjufy,fetiiin"Wnmrbfirfifrwnidll«lK«mnuvKortMn»i數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計迷宮問題實驗報告實驗二專業(yè):物聯(lián)網(wǎng)工程班級:物聯(lián)網(wǎng)1班學(xué)號:姓名:劉沛航實驗?zāi)康谋境绦蚴抢梅沁f歸的方法求出一條走出迷宮的路徑,并將路徑輸出。首先由用戶輸入一組二維數(shù)組來組成迷宮,確認(rèn)后程序自動運行,當(dāng)迷宮有完整路徑可以通過時,以。和1所組成的迷宮形式輸出,標(biāo)記所走過的路徑結(jié)束程序;當(dāng)迷宮無路徑時,提示輸入錯誤結(jié)束程序。二、實驗內(nèi)容用一個m*
2、m長方陣表示迷宮,。和1分別表示迷宮中的通路和障礙。設(shè)計一個程序?qū)τ谌我庠O(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。三、程序設(shè)計1、概要設(shè)計(1)設(shè)定棧的抽象數(shù)據(jù)類型定義ADTStack數(shù)據(jù)對象: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)造一個空棧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ù)對象: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)本程序包括三個模塊a、主程序模塊voidmain()初始化;構(gòu)造迷宮;迷宮求解;迷宮輸出;)b、棧模塊一一實現(xiàn)棧的抽象數(shù)據(jù)類型C、迷宮模塊一一實現(xiàn)迷宮的抽象數(shù)據(jù)類型2、詳細(xì)設(shè)計(1)坐標(biāo)位置類型:typedefstructintrow;.的列P°sType先呢,想自己讀入數(shù)據(jù)的,回來發(fā)現(xiàn)那樣,很麻煩,所以還是事先定義一個迷宮。2 .棧的元素類型一開始有點迷惑,后來就解決了3 .本題中三個主要算法;InitMaze,MazePath和PrintMaze的時間復(fù)雜度
6、均為0(m*n)本題的空間復(fù)雜度也是0(ni*n)清輻入迷宮的Hk初微增布卜慘儲懺格隔H). 3涉夜或皆到£注全:- Xi.建立迷宮:2 .通過1功能建立8水8的迷宮后,通過2功能繼續(xù)建立迷宮內(nèi)部:PWSERSXPEKAPDESfCJQG 中烹。ebuglMazaexb244342364 k3L O246 b7r- o35五、用戶使用說明1.本程序運行在windows系列的操作系統(tǒng)下,執(zhí)行文件為:。六、程序運行結(jié)果n昔A人建言河丁射|夕怯?2清人迷m內(nèi)暗單兒赦2迷自結(jié)構(gòu)如下臉入迷宮的血點/-1.511r出結(jié)臬o退出'GAU5ER5PEKAI-n.DfSlt-fDcbug
7、9;Maze.cxc'-XRf暮林*工口tx*富富押|&壬兩5拐.潢沛IW杠工迄事*沖c富士*1請轍a宮的醵,婕刃青輸入迷宮內(nèi)墻單元數(shù)宮蹴如下瑚人迷宮的3和終點踹出結(jié)果磋出精選俾2詩輸人述目內(nèi)雷金兀熟10話低枚輔人此旨n堆樂卜單元劌亍就列皺左梏廉開:愉越拼音軸人法分;通過建立自己設(shè)定單元數(shù)目建立迷宮內(nèi)墻。3 通過3功能觀察已建立的迷宮結(jié)構(gòu):lCMJSERSPEKAHDESKTOFM2文沖知DcbuglMa.exe'-Xty/卜八,mttt序瞞區(qū)BJE17011:刻沛醺*m*"八1mrt:請帶人建宮的廳曲列數(shù)乖符人迷言刁培單元數(shù)3迷宮結(jié)砌如下南人迷'言的
8、起點和終盛5金出結(jié)果。退出u o« o o o o n0 0 0 0 0防航窿之的建言u 1L 1x AV 11O 1 O 1 O0 01 00 01 00 01 01 00 0定義墻元君值為q可通過路徑為LW拉拼音新法全:S1T4 通過4功能確立迷宮起點和終點:(此處像我們隨機選擇4,4和2,7分別為起點終點)TMJRJEKAHkPESKTOP.JtXPtljuflWazrjeKe,澹輸小事宜的行敢列數(shù)2請輸入講盲內(nèi)埼阜廠抑卷恂如下嫌人迷宮的起點和線點瞬I出結(jié)卑嗡出謹(jǐn)型軍4請搐人起點的荷毀列觸請箍A撰點的彳亍覿列熱5執(zhí)行5功能,判斷是否有路徑走出迷宮:九其丈尊富心龍4富砂富草*鼻珀
9、*|(土c*鼻塞軸護匚剛及耳1518011g勿沛百丁席皿*4*桿4事蟬事事事一常就常昌卻1請輸入譯宜的行教力法2請翰心帶有內(nèi)垢阜廠曲卷恂如下婚商人迷宮的起點和終點瞄出結(jié)甲嗡出脫揮5也讓手殳肓從人口到出TI的斑良謝激彳復(fù)用劉恥世卷序愉X退注肚越拼音輸A壅全:這種情況無法走出迷宮。我們再次觀察圖像設(shè)4,4和1,6分別為起點終點,再運行5功能1P卻JSERSIPEKAHIPES燈。:諸建立件卻gbuq,.M丑樂珈才一口X中首鏟時亨皆存中的Hn+r宣|耳黃1|耶-巧邙。1L呂劉帝亍航十畬才申巧什曾叫i甘桿尸忡想沖申齊1請輸入迷宮潮亍致歹1黃時輸入趁宮內(nèi)墻單元甑制有亡構(gòu)劃-曲人注宮的起點和棘點5輸出純蠱
10、濾出遣逛擇-1情輸入起蔬的廳敘理撩(交儡4+廠14青輸入絡(luò)點BW縱列勖佐榕隔開L(;:二匕,二工C:二二,秀辛一二:二U二U:;丫3二:?Y'3X151EO11F劉沛沉二請輸入運頷!行數(shù),貓2請朝人運富力精單元數(shù)3法宮結(jié)構(gòu)加不砸入迷者的仙fe和終點司輸出結(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點的序號變?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á)終點(出口)return1;curpos=NextPos(curpos,;else/當(dāng)前位置不能通過if(!StackEmpty(S)Pop(&S,&e);/退棧到前一位置curstep;while=3&&!StackEmpty(S)/前一位置處J,最后一個方向MarkPrint;留F不能通過的標(biāo)記(-1)Pop(&S,&e
14、);退回一步curstep;if<3)/沒到最后一個方向(北)+;換下一個方向探索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 請選擇");scanf("%d", &n);劉沛航1請輸入迷宮的行數(shù),列數(shù)n);2請輸入迷宮內(nèi)墻單元數(shù)n);3迷宮結(jié)構(gòu)如下n");4輸入迷宮的起點和終點n);5輸出結(jié)果n);0退出n);switch(n)case1:printf(請輸入迷宮的行數(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(請輸入迷宮內(nèi)墻單元數(shù):);scanf(d”,&j);printfC請依次輸入迷宮內(nèi)墻每個單元的行數(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(請輸入起點的行數(shù),列數(shù):(空格隔開)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅行的策劃與感悟
- 2025年度電子產(chǎn)品全球配送與售后維護服務(wù)合同4篇
- 2025年度智能環(huán)保型廠房出售買賣協(xié)議書4篇
- 2025年度文化產(chǎn)業(yè)廠房購置及運營合作協(xié)議4篇
- 個人借貸抵押協(xié)議標(biāo)準(zhǔn)打印版2024年適用版B版
- 2025年度高科技廠房租賃合同(含知識產(chǎn)權(quán)保護)標(biāo)準(zhǔn)樣本4篇
- 個人專項資金貸款合同范本:2024年版B版
- 2024科技創(chuàng)新項目引薦服務(wù)合作合同一
- 2025年度供應(yīng)鏈金融合同履行的信用增級擔(dān)保服務(wù)3篇
- 2024版特定擔(dān)保書增補協(xié)議上訴文件版B版
- 起重機的維護保養(yǎng)要求與月度、年度檢查記錄表
- 消防設(shè)施維護保養(yǎng)記錄表
- 城區(qū)生活垃圾填埋場封場項目 投標(biāo)方案(技術(shù)方案)
- 垃圾分類巡檢督導(dǎo)方案
- 大一護理生涯發(fā)展展示
- 五年級上冊數(shù)學(xué)應(yīng)用題100題及答案
- 中國綠色食品市場調(diào)查與分析報告
- 新生兒急救與復(fù)蘇培訓(xùn)
- 外貿(mào)跟單員工作總結(jié)PPT
- UG-NX-8.5標(biāo)準(zhǔn)教程課件
- 神經(jīng)科2023年度工作總結(jié)及2024年度計劃
評論
0/150
提交評論