逃離迷宮(BFS)

2021-09-25 16:50:47 字數 1657 閱讀 4992

problem 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[sub]1[/sub], y[sub]1[/sub], x[sub]2[/sub], y[sub]2[/sub] (1 ≤ k ≤ 10, 1 ≤ x[sub]1[/sub], x[sub]2[/sub] ≤ n, 1 ≤ y[sub]1[/sub], y[sub]2[/sub] ≤ m),其中k表示gloria最多能轉的彎數,(x[sub]1[/sub], y[sub]1[/sub]), (x[sub]2[/sub], y[sub]2[/sub])表示兩個位置,其中x[sub]1[/sub],x[sub]2[/sub]對應列,y[sub]1[/sub], y[sub]2[/sub]對應行。

output

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

sample input

25 5

…***..……

…1 1 1 1 3

5 5…

*.*.……

*…2 1 1 1 3

sample output

noyes

#include#include#include#includeusing namespace std;

char map[101][101]; //記錄地圖

int visit[101][101]; //記錄是否走過該點

int n, m; //記錄最大行列

int k, x1, y1, x2, y2; //記錄最大拐角以及始末點

int t; //記錄執行次數

int dir[4][2] = ,,, }; //右左上下四個方向

int flag; //標記是否滿足條件。即:步數<=k;從起始點走到終點

struct node //存放臨時(x,y)與步數k

;int check(int x, int y) //檢查該點是否在地圖內並且無障礙

void bfs()

for (int i = 0; i < 4; i++)

temp.x = next.x + dir[i][0];

temp.y = next.y + dir[i][1];

next = temp;

}} }

}int main()

return 0;

}

逃離迷宮(bfs)

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

hdu 逃離迷宮 BFS

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

逃離ACM迷宮(BFS)

題目鏈結 題目描述 如下圖所示的是乙個由程式設計題目組成的acm迷宮。迷宮的左上角是入口,右下角是出口。迷宮中每乙個格仔都有乙個程式設計題目,挑戰者要ac該題目後才能通過,大於0的數字表示ac該題目所需的最短時間。數字如果是0表示是陷阱,進去了就出不來。現在的問題是 求挑戰者從入口到出口所需的最短時...