> 定義乙個二維陣列,例如:
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 起點 ...