CODE 遊樂園的迷宮

2021-08-15 14:32:41 字數 1457 閱讀 9158

題目

題目描述 description

迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。

這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n*m個小格仔組成。有的格仔可以正常走,標為』.』;有的格仔有陷阱不能走,標為『#』;有的格仔比較特殊,標為『*』,可以向周圍八個方向可走的格仔走一格;目的地標記為『@』。菜菜從左上角處開始,並且可以按中國象棋中的馬和象的方式或者特殊格的八方向來走。如果按照最短的路徑到達目的地,則可以獲得獎勵。

菜菜當然想獲得獎勵啦,於是就來找你幫忙,請你幫忙計算最少需要多少步。

輸入描述 input description

第一行,兩個正整數n,m。

接下來的n行m列描述了地圖。

輸出描述 output description

乙個整數,表示所要走的最小步數。若無法到達目的地則輸出-1。

樣例輸入 sample input

11 10

..…...

樣例輸出 sample output

13資料範圍及提示 data size & hint

對於20%的資料,保證0<n,m≤20

對於100%的資料,保證0<n,m≤200

**

#include

#include

using

namespace

std;

const

int maxn = 205;

int mp[maxn][maxn] = ;

int vis[maxn][maxn] = ;

int n,m;

struct node;

int dir[12][2] = ,,,,,,,,,,,};

int spe[8][2] = ,,,,,,,};

int jude = 0;

int operate(int &x,int &y,int step,int flag)

else

if(x<=0||x>n||y<=0||y>m||!mp[x][y]||vis[x][y])

return1;}

void bfs()

);

while(!q.empty())

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

);vis[a][b] = 1;

}a = n.x;

b = n.y;

if(mp[a][b]==2)

);vis[a][b] = 1;

}}

}

return ;

}int main()

}bfs();

if(!jude)

return

0; }

2855 遊樂園的迷宮

時間限制 1 s 空間限制 128000 kb 題目等級 gold 迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有...

Codevs 2855 遊樂園的迷宮

時間限制 1 s 空間限制 128000 kb 題目等級 gold 迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有...

codevs 2855 遊樂園的迷宮 bfs

迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有陷阱不能走,標為 有的格仔比較特殊,標為 可以向周圍八個方向可走的格...