SDJZUOJ迷宮問題(BFS)

2021-07-10 10:19:50 字數 1095 閱讀 8389

小明置身於乙個迷宮,請你幫小明找出從起點到終點的最短路程。

小明只能向上下左右四個方向移動。

輸入包含多組測試資料。輸入的第一行是乙個整數t,表示有t組測試資料。

每組輸入的第一行是兩個整數n和m(1<=n,m<=100)。

接下來n行,每行輸入m個字元,每個字元表示迷宮中的乙個小方格。

字元的含義如下:

『s』:起點

『e』:終點

『-』:空地,可以通過

『#』:障礙,無法通過

輸入資料保證有且僅有乙個起點和終點。

對於每組輸入,輸出從起點到終點的最短路程,如果不存在從起點到終點的路,則輸出-1。

15 5

s-###

-----

##---

e#---

---##9

/*

15 5

s-###

-----

##---

e#---

---##

*/#include#includeusing namespace std;

struct note

;struct note que[2051];

char a[51][51];

int i,j,k,n,m,startx,starty,p,q,ty,tx,flag;

int book[51][51];

int next[4][2]=,,,

};void bfs()

//如果到了目的地,停止擴充套件,任務結束,退出迴圈

if(tx==p&&ty==q)

}if(flag==1)

break;

head++;//這個地方千萬不能忘記,當乙個點擴充套件結束後,head++才能使得後面的點再進行擴充套件

}//列印佇列中末尾最後乙個點的步數

//注意tail是指向隊尾的下乙個位置,所以需要-1

cout<>n>>m;

for(i=1;i<=n;i++)

if(a[i][j]=='e')}}

bfs();

return 0;

}

迷宮問題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 起點 ...