![迷宮問題課程設(shè)計(jì)-數(shù)據(jù)結(jié)構(gòu)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/699cba57-e92a-48de-91c6-abd80798a16f/699cba57-e92a-48de-91c6-abd80798a16f1.gif)
![迷宮問題課程設(shè)計(jì)-數(shù)據(jù)結(jié)構(gòu)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/699cba57-e92a-48de-91c6-abd80798a16f/699cba57-e92a-48de-91c6-abd80798a16f2.gif)
![迷宮問題課程設(shè)計(jì)-數(shù)據(jù)結(jié)構(gòu)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/699cba57-e92a-48de-91c6-abd80798a16f/699cba57-e92a-48de-91c6-abd80798a16f3.gif)
![迷宮問題課程設(shè)計(jì)-數(shù)據(jù)結(jié)構(gòu)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/699cba57-e92a-48de-91c6-abd80798a16f/699cba57-e92a-48de-91c6-abd80798a16f4.gif)
![迷宮問題課程設(shè)計(jì)-數(shù)據(jù)結(jié)構(gòu)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/6/699cba57-e92a-48de-91c6-abd80798a16f/699cba57-e92a-48de-91c6-abd80798a16f5.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、迷宮問題一需求設(shè)計(jì):可以輸入一個(gè)任意大小的迷宮數(shù)據(jù),用非遞歸的方法求出一條走出迷宮的路徑,并將路徑輸出。二概要設(shè)計(jì):存儲(chǔ)結(jié)構(gòu):采用了數(shù)組以及結(jié)構(gòu)體來存儲(chǔ)數(shù)據(jù),在探索迷宮的過程中用到的棧,屬于順序存儲(chǔ)結(jié)構(gòu)。/八個(gè)方向的數(shù)組表示形式int move82=0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1, 0,-1, 1;/用結(jié)構(gòu)體表示位置struct positionint x,y;position stackm*m+1;基本算法:走迷宮的過程可以模擬為一個(gè)搜索的過程:每到一處,總讓它按東、東南、南、西南、西、西北、北、東北8個(gè)方向順序試探下一個(gè)位置;如果某方向可以通過,并且不曾到達(dá),
2、則前進(jìn)一步,在新位置上繼續(xù)進(jìn)行搜索;如果8個(gè)方向都走不通或曾經(jīng)到達(dá)過,則退回一步,在原來的位置上繼續(xù)試探下一位置。每前進(jìn)或后退一步,都要進(jìn)行判斷:若前進(jìn)到了出口處,則說明找到了一條通路;若退回到了入口處,則說明不存在通路。用一個(gè)字符類型的二維數(shù)組表示迷宮,數(shù)組中每個(gè)元素取值“0”(表示通路)或“1”(表示墻壁)。迷宮的入口點(diǎn)在位置(1,1)處,出口點(diǎn)在位置(m,m)處。設(shè)計(jì)一個(gè)模擬走迷宮的算法,為其尋找一條從入口點(diǎn)到出口點(diǎn)的通路。二維數(shù)組的第0行、第m+1行、第0列、第m+1列元素全置成“1”, 表示迷宮的邊界;第1行第1列元素和第m行第m列元素置成“0”, 表示迷宮的入口和出口;其余元素值用
3、隨機(jī)函數(shù)產(chǎn)生。假設(shè)當(dāng)前所在位置是(x,y)。沿某個(gè)方向前進(jìn)一步,它可能到達(dá)的位置最多有8個(gè)。如果用二維數(shù)組move記錄8個(gè)方向上行下標(biāo)增量和列下標(biāo)增量,則沿第i個(gè)方向前進(jìn)一步,可能到達(dá)的新位置坐標(biāo)可利用move數(shù)組確定: x=x+movei0 y=y+movei1從迷宮的入口位置開始,沿圖示方向順序依次進(jìn)行搜索。在搜索過程中,每前進(jìn)一步,在所到位置處做標(biāo)記“h”(表示這個(gè)位置在通路上),并將該位置的坐標(biāo)壓入棧中。每次后退的時(shí)候,先將當(dāng)前所在位置處的通路標(biāo)記“h”改成死路標(biāo)記“”(表示這個(gè)位置曾到達(dá)過但走不通,以后不要重復(fù)進(jìn)入),然后將該位置的坐標(biāo)從棧頂彈出。搜索到出口位置時(shí),數(shù)組中那些值為“h
4、”的元素形成一條通路。三詳細(xì)設(shè)計(jì):源程序:/*迷宮問題走迷宮的過程可以模擬為一個(gè)搜索的過程:每到一處,總讓它按東、東南、南、西南、西、西北、北、東北個(gè)方向順序試探下一個(gè)位置;如果某方向可以通過,并且不曾到達(dá),則前進(jìn)一步,在新位置上繼續(xù)進(jìn)行搜索;如果個(gè)方向都走不通或曾經(jīng)到達(dá)過,則退回一步,在原來的位置上繼續(xù)試探下一位置。 每前進(jìn)或后退一步,都要進(jìn)行判斷:若前進(jìn)到了出口處,則說明找到了一條通路;若退回到了入口處,則說明不存在通路。 用一個(gè)字符類型的二維數(shù)組表示迷宮,數(shù)組中每個(gè)元素取值“”(表示通路)或“”(表示墻壁)。迷宮的入口點(diǎn)在位置(,)處,出口點(diǎn)在位置(m,m)處。這個(gè)算法,為其尋找一條從入
5、口點(diǎn)到出口點(diǎn)的通路。*/#include#include#includevoid main()/設(shè)定m=10const int m=10;/數(shù)組的形式表示八個(gè)方向int move82=0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1, 0,-1, 1;/用結(jié)構(gòu)體表示位置struct positionint x,y;/用于記錄和輸出迷宮探路中相關(guān)符號(hào),包括1 .char mazem+2m+2;/用棧來存儲(chǔ)探路過程中的數(shù)據(jù)position stackm*m+1;int top;/棧頂int i,x,y,ok;position p;/二維數(shù)組的第行、第m+1行、第列、第m+1列元素全/置
6、成“”,表示迷宮的邊界;第行第列元素和第m行第m列/元素置成“”,表示迷宮的入口和出口;其余元素值用隨機(jī)/函數(shù)產(chǎn)生。srand(time(0);for(x=1;x=m;x+)for(y=1;y=m;y+)mazexy=48+rand()%2;maze11=0;mazemm=0;for(x=0;x=m+1;x+)mazex0=1;mazexm+1=1;for(y=0;y=m+1;y+)maze0y=1;mazem+1y=1;p.x=1;p.y=1;top=1;stacktop=p;maze11=.;/開始探路/走迷宮的過程可以模擬為一個(gè)搜索的過程:每到一/處,總讓它按東、東南、南、西南、西、西北
7、、北、東北/個(gè)方向順序試探下一個(gè)位置;如果某方向可以通過,并且不/曾到達(dá),則前進(jìn)一步,在新位置上繼續(xù)進(jìn)行搜索;如果個(gè)/方向都走不通或曾經(jīng)到達(dá)過,則退回一步,在原來的位置上/繼續(xù)試探下一位置。/ 每前進(jìn)或后退一步,都要進(jìn)行判斷:若前進(jìn)到了出/口處,則說明找到了一條通路;若退回到了入口處,則說明/不存在通路。dop=stacktop;ok=0;i=0;while(ok=0)&(i0)&(p.x!=m)|(p.y!=m);/輸出探路結(jié)果if(top=0) printf(沒有路徑n);else printf(有路徑n);/輸出探路迷宮留下的蹤跡for(x=1;x=m;x+)printf(n);for(y=1;y=m;y+) printf(%c ,mazexy);printf(n);四調(diào)試分析:測(cè)試數(shù)據(jù)和結(jié)果:當(dāng)設(shè)定迷宮為10*10:當(dāng)設(shè)定迷宮為5*5:算法時(shí)間復(fù)雜度
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境下的健康與舒適
- 未來的工作環(huán)境科技與舒適性的平衡
- 現(xiàn)代辦公環(huán)境下的智能配送技術(shù)應(yīng)用實(shí)例
- 2024秋七年級(jí)數(shù)學(xué)上冊(cè) 第4章 一元一次方程4.2 解一元一次方程 3用合并同類項(xiàng)法解方程說課稿(新版)蘇科版001
- Unit 4 History And Traditions Reading for Writing 說課稿-2023-2024學(xué)年高中英語人教版(2019)必修第二冊(cè)
- Unit 4 Friends Forever Understanding ideas click for a friend 說課稿-2024-2025學(xué)年高中英語外研版必修第一冊(cè)
- 2024年五年級(jí)英語下冊(cè) Unit 2 How do you come to school第1課時(shí)說課稿 譯林牛津版
- 6 魯濱遜漂流記(節(jié)選)(說課稿)-2023-2024學(xué)年語文六年級(jí)下冊(cè)統(tǒng)編版
- 16《夏天里的成長》(說課稿)2024-2025學(xué)年部編版語文六年級(jí)上冊(cè)001
- Unit 2 Wildlife Protection Reading and Thinking Language Focus 說課稿-2024-2025學(xué)年高一上學(xué)期英語人教版(2019)必修第二冊(cè)001
- 寧德時(shí)代筆試題庫
- 五年級(jí)下冊(cè)北京版英語單詞
- 康復(fù)醫(yī)院患者隱私保護(hù)管理制度
- 新課標(biāo)I、Ⅱ卷 (2024-2020) 近五年高考英語真題滿分作文
- 浙江省嘉興市2023-2024學(xué)年六年級(jí)(上)期末數(shù)學(xué)試卷
- 子宮脫垂手術(shù)指南
- 沈陽理工大學(xué)《數(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- DB41T 2231-2022 水利工程生態(tài)護(hù)坡技術(shù)規(guī)范
- 共享單車安全知識(shí)
- 渤海大學(xué)《大數(shù)據(jù)分析與實(shí)踐》2023-2024學(xué)年期末試卷
- 2024版2024年《咚咚鏘》中班音樂教案
評(píng)論
0/150
提交評(píng)論