逃離迷宮之轉彎問題。

2021-06-23 01:47:48 字數 2564 閱讀 3765

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

description

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

input

第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對應行。

output

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

sample input

2

5 5...**

*.**.

.....

.....

*....

1 1 1 1 3

5 5...**

*.**.

.....

.....

*....

2 1 1 1 3

sample output

no

yes

分析:我們特別要注意.x對應列。y對應著行。我想粗心的同學應該會看錯。之後一直wa。其實我也是被這個坑了。所以給大家警示以下我們可以這樣分析。我們從起始點開始,在他往上下左右四個地方走的時候,我們不能認為轉彎,所以可以另剛開始的時候,轉彎次數為-1,當選定了乙個方向的時候,就另那一排的轉彎次數都為0,知道遇到牆或者出界為止。例如,開始轉彎次數為-1,當像上走的時候,我們把像上的轉彎次數都是0,當再次轉彎的時候,例如像左轉,就一直向左走,把他們標記為轉彎次數為1。如圖。

我想大家可能還是不太理解。因為當初理解這個的時候也話了特別久的時間。那下面我們來看看**。細細領悟

//author qjs;

//first edit time: 2014-08-04 15:59

//last edit time: 2014-08-04 15:59

#include #include #include #include using namespace std;

const int size = 110;

const int dx = ;

const int dy = ;

char map1[size][size];

int vis[size][size];

int ex, ey, bx, by;

int m, n, limit;

struct node

;queueq;

int check(int x, int y)

void init()//對兩個資料進行初始化

void bfs(int bx, int by)

vis[bx][by] = 1;

node in, out;

in.x = bx; in.y = by;

in.step = -1;

q.push(in);

while(!q.empty())

}xx += dx[i];//如果沒有越界和遇到牆。我們就一直走,把那一條線都標記轉彎的次數

yy += dy[i];}}

}printf("no\n");

return;

}int main()

getchar();

}scanf("%d%d%d%d%d", &limit, &by, &bx, &ey, &ex);

bfs(bx, by);

}return 0;

}

VJ bfs 迷宮轉彎 逃離迷宮

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

dfs bfs 逃離迷宮

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

A 逃離迷宮 DFS

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