題目描述
現在有乙個5*5的迷宮,起點在左上角,終點在右下角,現在請你來寫乙個程式計算一下,lzy從起點開始走迷宮,最終能否成功的逃離迷宮?
如果lzy可以逃出迷宮,請輸出逃離迷宮的最短路徑,否則輸出 「no path」
輸入
測試樣例由多組測試資料組成,每組測試資料輸入乙個5 * 5的矩陣,矩陣中只包含 0 和 1
0 代表可以走的路徑
1 代表障礙物,不能通行
輸出
如果lzy能夠逃離迷宮,則輸出逃離迷宮的最短路徑 (格式參考樣例)
否則輸出 「no path」
如果有多條最短路徑,你只需要輸出任意一條即可
樣例輸入 copy
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
樣例輸出 copy
path: 1 —> (0, 0)
path: 2 —> (1, 0)
path: 3 —> (2, 0)
path: 4 —> (2, 1)
path: 5 —> (2, 2)
path: 6 —> (2, 3)
path: 7 —> (2, 4)
path: 8 —> (3, 4)
path: 9 —> (4, 4)
#include
using
namespace std;
int a[5]
[5];
int dir[4]
[2]=
,,,}
;struct q1cur, xia, ba[5]
[5];
intbfs()
}return0;
}int
main()
if(a[0]
[0]==
1)int temp =
bfs();
int s[10]
[2],cnt =0;
if(temp)
//這下面實在太亂,只要知道是輸出就可以了
int aka =1;
cout <<
"path: "
<< aka <<
" ---> ("
<<
0<<
", "
<<
0<<
")"<< endl;
for(
int i = cnt; i >=
1; i --)}
else
}return0;
}
bfs演算法 844 走迷宮 列印路徑
給定乙個n m的二維整數陣列,用來表示乙個迷宮,陣列中只包含0或1,其中0表示可以走的路,1表示不可通過的牆壁。最初,有乙個人位於左上角 1,1 處,已知該人每次可以向上 下 左 右任意乙個方向移動乙個位置。請問,該人從左上角移動至右下角 n,m 處,至少需要移動多少次。資料保證 1,1 處和 n,...
尋找迷宮路徑
尋找迷宮路徑其實就是遍歷每乙個可能的路徑,碰到能夠成功的路徑就返回。bool findpath position here here.row 1 here.col 1 maze 1 1 1 防止回到入口 int option 0 下一步 int lastoption 3 尋找一條路徑 while h...
搜尋迷宮路徑
從入口出發,按某一方向向前探索,若能走通則到達新點,並試探下一方向 若所有方向均沒有通路,則沿原路返回前一點,換下乙個方向再繼續試探,知道所有可能的路徑都試探到,或找到出口,或者無路可走退回到入口.為了能夠保證在到達某一點後不能繼續向前走時能退回到上乙個點並繼續進行下乙個方向的探尋,則需要有乙個能滿...