題目
題目描述 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個小格仔組成。有的格仔可以正常走,標為 有的格仔有陷阱不能走,標為 有的格仔比較特殊,標為 可以向周圍八個方向可走的格...