VJ bfs 迷宮轉彎 逃離迷宮

2022-06-19 03:51:14 字數 1826 閱讀 8126

給定乙個m × n (m行, n列)的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,gloria是個沒什麼方向感的人,因此,她在行走過程中,不能轉太多彎了,否則她會暈倒的。我們假定給定的兩個位置都是空地,初始時,gloria所面向的方向未定,她可以選擇4個方向的任何乙個出發,而不算成一次轉彎。gloria能從乙個位置走到另外乙個位置嗎?

第1行為乙個整數t (1 ≤ t ≤ 100),表示測試資料的個數,接下來為t組測試資料,每組測試資料中, 

第1行為兩個整數m, n (1 ≤ m, n ≤ 100),分別表示迷宮的行數和列數,接下來m行,每行包括n個字元,其中字元'.'表示該位置為空地,字元'*'表示該位置為障礙,輸入資料中只有這兩種字元,每組測試資料的最後一行為5個整數k, x 1, y 1, x 2, y 2 (1 ≤ k ≤ 10, 1 ≤ x 1, x 2 ≤ n, 1 ≤ y 1, y 2 ≤ m),其中k表示gloria最多能轉的彎數,(x 1, y 1), (x 2, y 2)表示兩個位置,其中x 1,x 2對應列,y 1, y 2對應行。 

每組測試資料對應為一行,若gloria能從乙個位置走到另外乙個位置,輸出「yes」,否則輸出「no」。

input

2

5 5...**

*.**.

.....

.....

*....

1 1 1 1 3

5 5...**

*.**.

.....

.....

*....

2 1 1 1 3

no

yes

以前是找迷宮要走多少路,今天是找轉了多少個彎。

每走一點轉彎就記錄一下,然後一直朝著這個方向走,直到走到盡頭。再開始轉另乙個彎。

有乙個坑的點是 這個點上一次已經走過了 book陣列記錄過了 ,但你也可以再走,只是不重覆記錄在佇列裡而已。

把 if 改成 while

初始化的那個點 k=-1.

最近太累了,不想說話了,直接看code吧。

1 #include "

pch.h

"2 #include3 #include4 #include

5 #include6 #include7 #include8

using

namespace

std;

9int

t, n, m, kk,aa, bb, cc, dd;

10char a[110][110

];11

bool book[110][110

];12

int next1[5][2] = ,,, };

13struct

student

14que[100010

];17

bool check(int x, int

y)18

23int bfs(int x1,int y1,int x2,int

y2)24

49 tx = tx + next1[i][0

];50 ty = ty + next1[i][1

];51}52

}53 head++;54}

55}56int

main()

5773

return0;

74 }

view code

逃離迷宮之轉彎問題。

time limit 1000msmemory limit 32768kb64bit io format i64d i64u description 給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,...

dfs bfs 逃離迷宮

給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...

A 逃離迷宮 DFS

給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...