尋找迷宮路徑

2021-08-21 16:36:29 字數 703 閱讀 7975

尋找迷宮路徑其實就是遍歷每乙個可能的路徑,碰到能夠成功的路徑就返回。

bool findpath()

position here;

here.row=1;

here.col=1;

maze[1][1]=1;//防止回到入口

int option=0;//下一步

int lastoption=3;

//尋找一條路徑

while(here.row!=size||here.col!=size)

if(option

<=lastoption)

else

}return true;

}

我們來理一下程式的思路,前面的造牆和方向偏移就不說了,主要說找路徑的核心**,首先從入口開始走,有上下左右四個方向,然後開始對四個方向進行遍歷,發現第0個方向即右不通於是走下,通了然後將之前的位置設定為牆防止走回來,然後繼續選擇右行,不行在opetion++下行,然後將之前的地方設定為1,反之走回來,然後繼續,發現option用完了,都走不通,於是刪除path最頂上的那個點,回退到上乙個點,並接著之前的方向進行遍歷,發現往左能走,於是走到左並將之前的點置一(雖然已經是1了),發現還是走不通,於是在回退,繼續遍歷,發現還是走不通,在退一格,在繼續遍歷,然後繼續走,能走就走,不能走就回退。總能找到一條路。

以上全部為我yy的,為了讓程式更容易理解。

尋找迷宮路徑(C 描述)

乙個迷宮可以用如下圖描述 0表示可以通過,1表示有障礙物。問題是在圖中是否可以找到一條路徑,從入口 左上頂點 到出口 右下頂點 主要思想是回溯法和深度優先搜尋 分析結合 看會更好 首先走一步,然後判斷是否到達出口,如果沒有到達出口,則找到要移動的相鄰的一步,1 找到了,則保持好當前的位置 放入棧 然...

尋找迷宮中的最短路徑

給定乙個n m的二維整數陣列,用來表示乙個迷宮,陣列中只包含0或1,其中0表示可以走的路,1表示不可通過的牆壁。最初,有乙個人位於左上角 1,1 處,已知該人每次可以向上 下 左 右任意乙個方向移動乙個位置。請問,該人從左上角移動至右下角 n,m 處,至少需要移動多少次。資料保證 1,1 處和 n,...

自動尋找走出迷宮的最短路徑

演算法心得 1.利用廣度優先遍歷 bfs 實現尋找最短路徑 2.利用樹的思想,將每走一步的終點與它的起點相連線,這樣就能在最後把整條最短路徑找出來 設定乙個結構體,儲存座標 struct note que size size 儲存座標和連線指標 struct tree ans size 2 size...