題目鏈結
題目如下:
蒜頭君在你的幫助下終於逃出了迷宮,但是蒜頭君並沒有沉浸於喜悅之中,而是很快的又陷入了思考,從這個迷宮逃出的最少步數是多少呢?
輸入格式
第一行輸入兩個整數 n和 m,表示這是乙個 n×m 的迷宮。
接下來的輸入乙個 n行 m列的迷宮。其中 『s』 表示蒜頭君的位置,』*『表示牆,蒜頭君無法通過,』.『表示路,蒜頭君可以通過』.'移動,'t』表示迷宮的出口(蒜頭君每次只能移動到四個與他相鄰的位置——上,下,左,右)。
輸出格式
輸出整數,表示蒜頭君逃出迷宮的最少步數,如果蒜頭君無法逃出迷宮輸出 −1。
資料範圍
1≤n,m≤10。
sample input
3 4s**.
…*.***t
sample output
-1sample input 2
3 4s**.
…***t
sample output 2
這是一道搜尋題,可以用深度優先搜尋解答也可以用廣度優先搜尋解答。很標準的搜尋題。題目要求得到最少步數,我們就更新到達目的地的所需步數,走過的位置需要標記。
**如下:
#include
using
namespace std;
struct muban
stu[
8000];
char imap[15]
[15];
int book[15]
[15];
int next[4]
[2]=
,,,}
;int
main()
if(imap[i]
[j]==
't')}}
int head,tail;
int tx,ty;
head=1;
stu[head]
.x=stax;
stu[head]
.y=stay;
stu[head]
.step=0;
book[stax]
[stay]=1
; tail=2;
int stepmin=
200;
while
(head(stu[tail-1]
.x==endx&&stu[tail-1]
.y==endy)}}
head++;}
if(stepmin==
200)
cout<<
"-1\n"
cout
}
計蒜客 走迷宮
給乙個 n行 m 列的 2 維的迷宮,s 表示迷宮額起點,t 表示迷宮的終點,表示不能通過的點,表示可以通過的點。你需要從 s 出發走到 t 每次只能上下左右走動,並且只能進入能通過的點,每個點只能通過一次。現在要求你求出有多少種通過迷宮的的方案。輸入格式 第一行輸入 n,m 1 n,m 10 表示...
迷宮 二 計蒜客 BFS解法
題目 蒜頭君在你的幫助下終於逃出了迷宮,但是蒜頭君並沒有沉浸於喜悅之中,而是很快的又陷入了思考,從這個迷宮逃出的最少步數是多少呢?輸入格式 第一行輸入兩個整數 n 和 m,表示這是乙個 n m 的迷宮。接下來的輸入乙個 n 行 m 列的迷宮。其中 s 表示蒜頭君的位置,表示牆,蒜頭君無法通過,表示路...
計蒜客 走迷宮2 bfs
一樣的迷宮,這次要求不是求有多少條出去的路,而是求最短出去的路,使用bfs就可以知道了。需要用乙個char陣列儲存迷宮 乙個int陣列表示距離長度 乙個bool陣列表示是否訪問過 這不是唯一的,還有其它的可能性,可以三合一,如這裡的表示方式 給你乙個 n 行 m 列的二維迷宮。s 表示起點,t 表示...