




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.3棧的應(yīng)用--迷宮求解例四、迷宮【問題描述】
以一個(gè)m*n的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路。或得出沒有通路的結(jié)論迷宮用計(jì)算機(jī)來求解方法其實(shí)很簡(jiǎn)單,就是走遍所有可能的路徑,直到找到出口為止,當(dāng)走到錯(cuò)誤的路線的時(shí)候,就退回上一個(gè)路口交叉點(diǎn),選擇其他方向.這種思維其實(shí)用堆棧(stack)完全可以解決例四、迷宮求解通常用的是“窮舉求解”的方法
11
112
222
232
133
134
424
125
126
416
315
314
43$$$$$$$$迷宮思路
在設(shè)計(jì)這個(gè)問題時(shí),我考慮到以下幾點(diǎn):
1、迷宮入口和出口的坐標(biāo)
2、保存迷宮的2維數(shù)組
3、獲得路徑的函數(shù)
我們模仿人走迷宮時(shí)的思路,設(shè)置一個(gè)當(dāng)前點(diǎn),一個(gè)目標(biāo)點(diǎn)(下一個(gè)要走的點(diǎn))。初始情況下當(dāng)前點(diǎn)為入口,終止條件為當(dāng)前點(diǎn)為出口,這樣,我們的函數(shù)大概結(jié)構(gòu)就出來了。
在從入口到出口的過程中程序?qū)Ξ?dāng)前點(diǎn)的上、下、左、右四個(gè)點(diǎn)依次進(jìn)行判斷,當(dāng)發(fā)現(xiàn)任一個(gè)方向是未走過的區(qū)域時(shí),就將當(dāng)前點(diǎn)指向那個(gè)點(diǎn)進(jìn)行嘗試,同時(shí)將當(dāng)前點(diǎn)入棧并做標(biāo)記。而當(dāng)4個(gè)方向都不通或已走過時(shí),則為死路,標(biāo)記當(dāng)前點(diǎn)為死路并從棧中彈出上一個(gè)點(diǎn)繼續(xù)進(jìn)行嘗試,這時(shí)因?yàn)楫?dāng)前點(diǎn)已被標(biāo)記為死路,則彈出上一個(gè)點(diǎn)時(shí)就不會(huì)重復(fù)這條路,達(dá)到尋找正確路徑的效果。
描述:當(dāng)前點(diǎn):坐標(biāo)位置(x,y),可用二維數(shù)組實(shí)現(xiàn)(seat)記錄當(dāng)前點(diǎn)探索的方向:di如起點(diǎn)為(1,1),先判斷東(1),南(2),西(3),北(4),順時(shí)針方向轉(zhuǎn),判斷其鄰居是否通,不同的話,鄰居轉(zhuǎn)向下一個(gè)方向探索,若均不通,則按原路返回,退棧.取棧頂元素,沿下一個(gè)方向探索注意:凡走過的也要標(biāo)記符號(hào):迷宮的分析迷宮設(shè)置為一個(gè)2維數(shù)組,通路為1,不通為0,但是四周為屏障設(shè)置一個(gè)棧來存儲(chǔ)迷宮的路徑:記錄每個(gè)位置的坐標(biāo)值(x,y),同時(shí)將納入棧中的路徑,記錄它來自何方,也就是記錄它的探測(cè)方向編號(hào)(東,南,西,北類似于地圖的指示,1,2,3,4)通的話就入棧操作:(x,y,di)探測(cè)當(dāng)前坐標(biāo)位置的所有鄰居均不通:出棧,打上腳印,此路不通,不再加入再對(duì)棧頂重新探測(cè)尋求新的鄰居入棧直到達(dá)到迷宮出口(有解)或退回到原路的入口(無解)程序流程圖開始迷宮求解構(gòu)建迷宮結(jié)束打印路徑迷宮算法判斷當(dāng)前結(jié)點(diǎn)是否通暢通暢,則記錄該點(diǎn)到棧中,并判斷是為終點(diǎn),不為終點(diǎn)的話,繼續(xù)前行探索不通暢,則后退,換方向訪問,到棧空結(jié)束設(shè)置訪問東鄰居開始,若其不通,換方向探路鄰居訪問遍,均不通,退出此結(jié)點(diǎn),取當(dāng)前棧頂?shù)奈丛L問鄰居探路總結(jié):對(duì)于一個(gè)入棧的節(jié)點(diǎn)要記錄其位置(x,y),同時(shí)記錄其探索鄰居的方向di(1,2,3,4)記錄四個(gè)鄰居同時(shí)對(duì)于已經(jīng)退出的節(jié)點(diǎn)標(biāo)記無需標(biāo)記其”不通”,只要沿下一個(gè)方向轉(zhuǎn)圈就可.迷宮演示見cd中的遞歸cd迷宮DS-Algo-VC下的第三章算法3.3求迷宮路徑算法的基本思想是:若當(dāng)前位置“可通”,則納入路徑,繼續(xù)前進(jìn);若當(dāng)前位置“不可通”,則后退,換方向繼續(xù)探索;若四周“均無通路”,則將當(dāng)前位置從路徑中刪除出去。設(shè)定當(dāng)前位置的初值為入口位置;
do{
若當(dāng)前位置可通,
則{將當(dāng)前位置插入棧頂;
若該位置是出口位置,則算法結(jié)束;否則切換當(dāng)前位置的東鄰方塊為新的當(dāng)前位置;
}
否則{
}}while(棧不空);求迷宮中一條從入口到出口的路徑的算法:
……若棧不空且棧頂位置尚有其他方向未被探索,則設(shè)定新的當(dāng)前位置為:沿順時(shí)針方向旋轉(zhuǎn)找到的棧頂位置的下一相鄰塊;若棧不空但棧頂位置的四周均不可通,則{刪去棧頂位置;//從路徑中刪去該通道塊
若棧不空,則重新測(cè)試新的棧頂位置,
直至找到一個(gè)可通的相鄰塊或出棧至棧空;}若棧空,則表明迷宮沒有通路。實(shí)驗(yàn)內(nèi)容
一個(gè)m×n的迷宮,0:暢通,1:障礙,設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出從入口到出口的通路。入口:11;出口:68
010110111001101001100111100110011100110101110000
實(shí)現(xiàn)提示1.用一種稱為廣度搜索的算法,將迷宮的入點(diǎn)(1,1)作為第一個(gè)出發(fā)點(diǎn),向四周搜索可通行的位置,形成第一層新的出發(fā)點(diǎn),然后對(duì)第一層中各個(gè)位置再分別向四周搜索可通行的位置,形成第二層新的出發(fā)點(diǎn),如此進(jìn)行下去直至到達(dá)迷宮的出口點(diǎn)(m,n)為止。實(shí)現(xiàn)提示2.為了避免多次檢測(cè)是否走到邊沿,將迷宮周圍各鑲上一條邊,相當(dāng)于在迷宮的周圍布上一圈不通過的的墻。3.為了避免有的點(diǎn)被重復(fù)到達(dá),應(yīng)標(biāo)志已通過的位置,可以采用一個(gè)標(biāo)志數(shù)組來標(biāo)志已通過了的位置。實(shí)現(xiàn)提示4.為了記錄搜索過程中到達(dá)位置及其出發(fā)點(diǎn),可以建立一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組的每組元素有三個(gè)域x,y,pre,其中分別記錄x和y到達(dá)位置的行、列坐標(biāo),pre記下其出發(fā)點(diǎn)在數(shù)組中的坐標(biāo)程序流程圖開始迷宮求解構(gòu)建迷宮結(jié)束打印路徑注意問題
1.同學(xué)們可以先按照給定的迷宮去做,完成的情況下可以將迷宮改成可根據(jù)輸入變化的任意迷宮。
2.注意數(shù)組表示的迷宮下標(biāo)和現(xiàn)實(shí)迷宮下標(biāo)的不同。
3.跟蹤迷宮求解過程中程序的執(zhí)行情
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦案點(diǎn)突發(fā)火災(zāi)應(yīng)急預(yù)案(3篇)
- 材料疲勞壽命預(yù)測(cè)模型重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 江蘇省南京市、鹽城市2025屆高三下學(xué)期3月一模試題 地理 含解析
- 火災(zāi)應(yīng)急預(yù)案培訓(xùn)內(nèi)容范文(3篇)
- 公路旁管線火災(zāi)應(yīng)急預(yù)案(3篇)
- 軟件考試考前準(zhǔn)備策略試題及答案
- 《環(huán)保與生活》課件-第四篇
- 行政管理的法律法規(guī)變化與應(yīng)對(duì)方式解析試題及答案
- 服務(wù)器與網(wǎng)絡(luò)設(shè)備的管理技巧試題及答案
- 軟件設(shè)計(jì)師考試成功秘訣試題及答案
- 遂寧遂寧市住房和城鄉(xiāng)建設(shè)局公開招聘編外人員筆試歷年參考題庫附帶答案詳解
- DBJ41-T311-2025 《人民防空節(jié)鎳型不銹鋼防護(hù)設(shè)備選用與安裝技術(shù)標(biāo)準(zhǔn)》
- 2025高考化學(xué)復(fù)習(xí)新題速遞之有機(jī)合成(解答大題)(2025年4月)
- 駕校掛靠合同協(xié)議書
- 2025年福建武夷旅游集團(tuán)有限公司人才教育板塊自主招聘17人筆試參考題庫附帶答案詳解
- 新聞閱讀-2024年中考語文記敘文閱讀專項(xiàng)復(fù)習(xí)(原卷版)
- 2025-2030中國面粉行業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資研究報(bào)告
- 民法典進(jìn)企業(yè)講稿課件
- 國家開放大學(xué)《Web開發(fā)基礎(chǔ)》形考任務(wù)實(shí)驗(yàn)1-5參考答案
- 輸變電工程施工質(zhì)量驗(yàn)收統(tǒng)一表式附件1:線路工程填寫示例
- 數(shù)學(xué)分析課件之第四章函數(shù)的連續(xù)性
評(píng)論
0/150
提交評(píng)論