白雪公主身陷在乙個m*n大小的迷宮中,迷宮中的障礙物是不能通行的。迷宮中用s代表白雪公主的位置,用e代表出口,#代表障礙物,*代表可以通行的道路。白雪公主只可以向上、下、左、右四個方向行走,並且每一步只能走乙個單位的長度。現給定m,n以及迷宮的樣子,求解x走到出口的過程中最少需要改變行走方向幾次?如果x無法到達出口就輸出 -1,否則輸出需要的最小改變方向次數,白雪公主會盡量走改變方向較少的路線,只要相鄰兩次行走方向不一樣就算改變方向一次。 (1<=m,n<=100)
第一行輸入兩個正整數m和n, 接下來輸入mn的迷宮,迷宮元素只包含 s 、e、、# 四種字元。
如果白雪公主能從s能到達出口e,輸出最少改變方向次數,否則輸出-1,每組輸出佔一行。
在這裡給出一組輸入。例如:
5 5
s****
####*
*****
*####
****e
在這裡給出相應的輸出。例如:
4
因為障礙物(#)不能通行,所以白雪公主只能通過*到達e,最少需要轉彎4次
//
// created by tiga_huang on 2020/10/10.
//#include
#include
using
namespace std;
int n, m;
char a[
105]
[105];
int x=
;int y=
;int min_ans = int_max;
bool vis[
105]
[105];
void
dfs(
int i,
int j,
int d,
int ans)
if(a[i]
[j]==
'#')
return;if
(vis[i]
[j])
return
; vis[i]
[j]=
true;if
(a[i]
[j]==
'e'&& ans < min_ans)
dfs(i + x[d]
, j + y[d]
, d, ans)
;for
(int k =
0; k <4;
++k)
} vis[i]
[j]=
false;}
intmain()
}}dfs(x, y,0,
0); cout << min_ans << endl;
return0;
}
DFS(入門題,走迷宮)
1185 走迷宮 time limit 1 sec memory limit 128 mb submit 383 solved 155 submit status web board description 給一張個迷宮,問能否從起點走到終點,只能往上下左右走,不能斜著走 input 多組測試資料,...
程式設計題走迷宮 C 程式演算法題 迷宮(一)
題目 一天蒜頭君掉進了乙個迷宮裡面,蒜頭君想逃出去,可憐的蒜頭君連迷宮是否有能逃出去的路都不知道。看在蒜頭君這麼可憐的份上,就請聰明的你告訴蒜頭君是否有可以逃出去的路。輸入格式 第一行輸入兩個整數 n和 m,表示這是乙個 n m的迷宮。接下來的輸入乙個 n行 m列的迷宮。其中 s 表示蒜頭君的位置,...
3752 走迷宮 BFS入門題
描述 乙個迷宮由r行c列格仔組成,有的格仔裡有障礙物,不能走 有的格仔是空地,可以走。給定乙個迷宮,求從左上角走到右下角最少需要走多少步 資料保證一定能走到 只能在水平方向或垂直方向走,不能斜著走。輸入 第一行是兩個整數,和 代表迷宮的長和寬。1 r,c 40 接下來是 行,每行 個字元,代表整個迷...