迷宮問題 BFS

2021-10-06 18:58:54 字數 1244 閱讀 2449

> 定義乙個二維陣列,例如: 

int maze[5]

[5]=

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

輸入格式:

乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一最短路徑。

輸出格式:

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

輸入樣例:01

0000

1010

0000

0011

1000

010輸出樣例:(0

,0)(

1,0)

(2,0

)(2,

1)(2

,2)(

2,3)

(2,4

)(3,

4)(4

,4)#include

#include

#include

using

namespace std;

int migong[5]

[5];

//儲存迷宮圖

bool flag[5]

[5];

//標記改點是否到達過

class

stat

;int r[4]

[2]=

;//用於狀態擴充套件

stat*

bfs(

)//返回終點狀態

q.push

(temps)

;//將新狀態加入佇列中

flag[x]

[y]=

true

;//標記該狀態已經到達過

}//【這段for迴圈後,剛開始進入的點的所有可能性都放入佇列中,準備進入下一

//個階段,繼續檢索這個佇列】

}return start;

}int

main()

} stat* p =

bfs();

stack> s;

//宣告堆疊s

//放入棧中,主要是為了讓其反序,不然從目標狀態找其父節點遍歷的話,是反的

//【這個想法很好,不這麼做的話從佇列裡先出來的是終點】

while

(p !=

null

)//

while

(s.empty()

==false

)}

迷宮問題bfs

迷宮問題 採用佇列的廣度優先遍歷 bfs 思想是從乙個頂點v0開始,輻射狀地優先遍歷其周圍較廣的區域 找到的解為最優解 include define m 8 define n 8 define maxsize 1000 typedef struct box typedef struct qutype...

迷宮問題BFS

the code 資料結構迷宮.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include define n 4 定義迷宮為4 4 using namespace std struct pot 為記錄路徑的rec準備,座標 x...

迷宮問題bfs

小明置身於乙個迷宮,請你幫小明找出從起點到終點的最短路程。小明只能向上下左右四個方向移動。輸入包含多組測試資料。輸入的第一行是乙個整數t,表示有t組測試資料。每組輸入的第一行是兩個整數n和m 1 n,m 100 接下來n行,每行輸入m個字元,每個字元表示迷宮中的乙個小方格。字元的含義如下 s 起點 ...