附加題 走迷宮

2021-10-24 15:21:50 字數 1401 閱讀 2479

白雪公主身陷在乙個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 接下來是 行,每行 個字元,代表整個迷...