68 地牢逃脫

2021-09-10 01:47:11 字數 1218 閱讀 4707

(個人水平有限,請見諒!)

給定乙個 n 行 m 列的地牢,其中 『.』 表示可以通行的位置,『x』 表示不可通行的障礙,牛牛從 (x0 , y0 ) 位置出發,遍歷這個地牢,和一般的遊戲所不同的是,他每一步只能按照一些指定的步長遍歷地牢,要求每一步都不可以超過地牢的邊界,也不能到達障礙上。地牢的出口可能在任意某個可以通行的位置上。牛牛想知道最壞情況下,他需要多少步才可以離開這個地牢。

每個輸入包含 1 個測試用例。每個測試用例的第一行包含兩個整數 n 和 m(1 <= n, m <= 50),表示地牢的長和寬。接下來的 n 行,每行 m 個字元,描述地牢,地牢將至少包含兩個 『.』。接下來的一行,包含兩個整數 x0, y0,表示牛牛的出發位置(0 <= x0 < n, 0 <= y0 < m,左上角的座標為 (0, 0),出發位置一定是 『.』)。之後的一行包含乙個整數 k(0 < k <= 50)表示牛牛合法的步長數,接下來的 k 行,每行兩個整數 dx, dy 表示每次可選擇移動的行和列步長(-50 <= dx, dy <= 50)。

輸出一行乙個數字表示最壞情況下需要多少次移動可以離開地牢,如果永遠無法離開,輸出 -1。以下測試用例中,牛牛可以上下左右移動,在所有可通行的位置.上,地牢出口如果被設定在右下角,牛牛想離開需要移動的次數最多,為3次。

3 3

......

...0 1

41 0

0 1-1 0

0 -1

3
//若有,則在time次迴圈中必能找出。

#include #include #include using namespace std;

int main()

cin >> x0 >> y0 >> k;

step[x0][y0] = 0;

int* xx = new int[k];

int* yy = new int[k];

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

cin >> xx[i] >> yy[i];

for (int zr = 0; zr < time; zr++)

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

for (int j = 0; j < m; j++)

if (step[i][j] == zr)

for (int t = 0; t < k; t++)

POJ 2251地牢大師

演算法標籤 bfs你現在被困在乙個三維地牢中,需要找到最快脫離的出路!地牢由若干個單位立方體組成,其中部分不含岩石障礙可以直接通過,部分包含岩石障礙無法通過。向北,向南,向東,向西,向上或向下移動乙個單元距離均需要一分鐘。你不能沿對角線移動,迷宮邊界都是堅硬的岩石,你不能走出邊界範圍。請問,你有可能...

地牢逃脫 BFS

題意 給定乙個 n 行 m 列的地牢,其中 表示可以通行的位置,x 表示不可通行的障礙,牛牛從 x0 y0 位置出發,遍歷這個地牢,和一般的遊戲所不同的是,他每一步只能按照一些指定的步長遍歷地牢,要求每一步都不可以超過地牢的邊界,也不能到達障礙上。地牢的出口可能在任意某個可以通行的位置上。牛牛想知道...

網易程式設計題 逃脫地牢

給定乙個 n 行 m 列的地牢,其中 表示可以通行的位置,x 表示不可通行的障礙,牛牛從 x0 y0 位置出發,遍歷這個地牢,和一般的遊戲所不同的是,他每一步只能按照一些指定的步長遍歷地牢,要求每一步都不可以超過地牢的邊界,也不能到達障礙上。地牢的出口可能在任意某個可以通行的位置上。牛牛想知道最壞情...