迷宮 二 計蒜客 1596

2021-10-07 21:07:43 字數 1337 閱讀 7780

題目鏈結

題目如下:

蒜頭君在你的幫助下終於逃出了迷宮,但是蒜頭君並沒有沉浸於喜悅之中,而是很快的又陷入了思考,從這個迷宮逃出的最少步數是多少呢?

輸入格式

第一行輸入兩個整數 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 表示...