2855 遊樂園的迷宮

2022-04-06 21:44:34 字數 1701 閱讀 7758

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

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

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

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

輸入描述 input description

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

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

輸出描述 output description

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

樣例輸入 sample input

11 10

樣例輸出 sample output

5  (題目樣例有問題)

資料範圍及提示 data size & hint

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

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

分析:首先一定要讀題,讀懂題(語文不好,啥也白搭),原以為你每個點可以跳馬跳象,然後一般的還可以上下左右,*還點則八方位走,所以80!!!總是有答案。

第二遍以為只有一般的點可以跳馬跳象,*點只能八方位走,最後我終於明白,所有的點都可以跳馬跳象,而*點還能八方位走。orz

bfs搜尋

1 #include2 #include3 #include4

using

namespace

std;56

const

int maxn = 210;7

struct

nodecur,nxt;

10char

mp[maxn][maxn];

11int bx[8] = ,by[8] = ;

12int dx[12] = ,dy[12] = ;

13bool

v[maxn][maxn];

14int

n,m;

15 queueq;

1617

void

bfs()

1827

while (!q.empty())

2841 nxt.x = xx;nxt.y = yy;nxt.step = cur.step+1

;42 v[xx][yy] = true;43

q.push(nxt);44}

45}46if (mp[cur.x][cur.y]=='*'

)47for (int i=0; i<8; ++i)

4857 nxt.x = xx;nxt.y = yy;nxt.step = cur.step+1

;58 v[xx][yy] = true;59

q.push(nxt);60}

61}62}

63 printf("-1"

);64}65

intmain()

66

Codevs 2855 遊樂園的迷宮

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

codevs 2855 遊樂園的迷宮 bfs

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

CODE 遊樂園的迷宮

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