題目描述
鵬鵬在乙個迷宮裡困住了。
迷宮是長方形的,有 n 行 m 列個格仔。一共有 3 類格仔,空地用字元』.』 表示,牆壁用』#』表示,陷阱用』*』表示。
特別地,迷宮中有兩個特殊的格仔:起點用』s』表示;終點用』e』表示。 起點和終點都是空地。(』s』和』e』均為大寫字母)
鵬鵬的任務是:從起點出發,沿著某條路徑,走到終點。
遊戲對路徑的要求有三條:每次只能向相鄰格仔(上/下/左/右)移動一步;不能經過牆壁(即可以經過空地和陷阱);不能走出迷宮邊界。
聰明的你請告訴鵬鵬,他能完成任務嗎?如果能,鵬鵬能否不經過任何陷阱就完成任務呢?
輸入格式
第一行為兩個整數 n,m(2≤n,m≤7)。
接下來有 n 行,每行是乙個長度為 m 的字串,依次表示迷宮的每一行格仔。
輸出格式
有一行,是乙個字串。
如果鵬鵬可以不經過任何陷阱就到達終點,輸出」good」;
否則,如果經過 若干陷阱能到達終點,輸出」ok」;
否則,輸出」bad」。(所有字母均為大寫)
輸入樣例 134
##.e
s*.#..
.*輸出樣例 1
good
輸入樣例 233
##es*.#.
.輸出樣例 2
ok提示
##671*
5#234
*樣例 1 的最優路線為 1
->2-
>3-
>4-
>5-
>6-
>
7,如上圖。
模板題
c++ code:
#include
using
namespace std;
int n,m,sx,sy,fx,fy;
char g[10]
[10];
int vis[10]
[10];
const
int dx[4]
=;const
int dy[4]
=;void
dfs1
(int x,
int y)
else}}
}void
dfs2
(int x,
int y)
else}}
}int
main()
vis[sx]
[sy]=1
;dfs1
(sx,sy)
;memset
(vis,0,
sizeof
(vis));
vis[sx]
[sy]=1
;dfs2
(sx,sy)
; cout<<
"bad"
;return0;
}
dfs迷宮問題模板
輸入起點終點座標,輸入迷宮,輸出最短路 對於每種情況到達的下一步,又有n種情況可以走,include include include define n 100 using namespace std int map n n vis n n int endx,endy,m,n int min 9999...
bfs迷宮問題模板
bfs一般用於求迷宮起點到終點的最短距離,原因是迷宮各個方向權值相等 include include include include define n 50 using namespace std struct point point start point p queueq int m,n int...
迷宮問題1
c 語言程式設計練習1 程式設計練習 編寫程式尋找迷宮路徑。入口 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 出口x 圖1讀取迷宮檔案 如圖1所示 不限於此迷宮 以入口為開始 出口為終點 程式設計尋找一條穿越迷宮的路...