迷宮(深度搜尋 存最短路徑)

2021-09-23 15:25:27 字數 951 閱讀 4471

問題描述

定義乙個二維陣列:

定義乙個5*5的陣列maze[5] [5] =

;它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

輸入:乙個5×5的二維陣列,表示乙個迷宮。資料保證有唯一解。

輸出:左上角到右下角的最短路徑,格式如樣例所示。

樣例輸入:

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

樣例輸出:

(0,0)

(1,0)

(2,0)

(2,1)

(2,2)

(2,3)

(2,4)

(3,4)

(4,4)

題意思路:

可以深搜也可以廣搜,因為沒寫過深搜的部落格,就用深搜寫的。

**:#include using namespace std;

int maze[5][5];

struct point //定義點結構體

;int mini_k = 100000; //最小的k

point path[1000]; //暫存路徑的陣列

point shortest_path[1000]; //最短路徑的陣列

int flag[5][5]=; //標記是否訪問過,初始化為全0

bool inside(int x,int y)//判斷x,y是否在地圖內

void dfs(int x,int y,int k)//對點 (x,y) 進行dfs遍歷 當前是第k步

}flag[0][0]=1;

path[0]=;

dfs(0,0,1);

for(int i=0;i感悟:這道題在深度搜尋的基礎上,加了儲存了最短路徑的**。

迷宮最短路徑 深度優先搜尋 C python

從迷宮的起點到終點的最短路徑,用深度優先搜尋 c實現 include int n,m,p,q,min 99999999 int a 100 100 book 100 100 void dfs int x,int y,int step if x p y q for k 0 k 3 k return i...

練習 最短路徑 深度搜尋

乙個根據深度搜尋模型寫的最短路徑 參考如下 啊哈演算法 4.2 p81 最短路徑 public class shortpath 向右走 向下走 向左走 向上走 地圖是乙個5 5的矩陣 public static int x 5,y 5 定義終點 public static int ex 2,ey 2...

迷宮最短路徑

include include using namespace std const int max n 100,max m 100 const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pairp 輸入 char maze max ...