時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** gold
迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。
這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由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
50分**存檔:
1 #include2 #include3 #include4 #include5ac**:using
namespace
std;
6#define maxn 205
7int
n,m,dis[maxn][maxn],ex,ey;
8int dx=;
9int dy=;
10int bax=;
11int bay=;
12char
map[maxn][maxn];
13 queuestx,sty;
14bool
vis[maxn][maxn];
15bool judge(int xx,int
yy)20
void
bfs()33}
34}35else
if(map[nx][ny]=='*'
)43}44
}45}46
}47intmain()
4856 dis[1][1]=0;57
bfs();
58if(dis[ex][ey]==0x3f) printf("
-1\n");
59else printf("
%d\n
",dis[ex][ey]);
60return0;
61 }
1 #include2 #include3//話說這題樣例有問題,被樣例坑了好長時間.......using
namespace
std;
4const
int maxn = 205;5
char
maze[maxn][maxn];
6int
n,m;
7int
dx,dy;
8bool
vis[maxn][maxn];
9struct
node ;
13bool is_raw(int x,int
y) 17
bool ok = false;18
int dir[24]= ;//象20
int spec[16] = ;//
九宮格21
int ans = 0;22
void bfs()
36q.pop();
37for(int i = 0 ; i < 24; i = i + 2
) 47}48
if(maze[head.x][head.y] == '*'
) 59}60
}61}62
}63intmain() 72}
73//
printf("目標是 %d %d\n",dx,dy);
74bfs();
75if(ok) printf("
%d\n
",ans);
76else cout<
<
77 }
再次ac**:
/*
再次ac**。。我日,我說咋回事嗎,我感覺我寫的也沒什麼
毛病就是不對挨!原來是題意理解錯誤 對於那些特殊的點既能夠
按照八方向來走 ,也能夠按照 普通點的 方向來走,剛開始寫的時候
把兩類點分開 寫的。。。
*/#include#include#include#includeusing namespace std;
#define maxn 205
int n,m,dis[maxn][maxn],ex,ey;
int dx=;
int dy=;
int bax=;
int bay=;
char map[maxn][maxn];
queuestx,sty;
bool vis[maxn][maxn];
bool judge(int xx,int yy)
void bfs()
}if(map[nx][ny]=='*')}}
}}int main()
dis[1][1]=0;
bfs();
if(dis[ex][ey]>=1500000) printf("-1\n");
else printf("%d\n",dis[ex][ey]);
return 0;
}
codevs 2855 遊樂園的迷宮 bfs
迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有陷阱不能走,標為 有的格仔比較特殊,標為 可以向周圍八個方向可走的格...
2855 遊樂園的迷宮
時間限制 1 s 空間限制 128000 kb 題目等級 gold 迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有...
CODE 遊樂園的迷宮
題目 題目描述 description 迷宮可是每個遊樂園必不可少的專案,菜菜當然是要嘗試一下啦。這個迷宮比較特殊。與其說是迷宮,倒不如說是乙個巨大的格仔。遊樂園給菜菜發了一張地圖,地圖上標明了,這個格仔由n行m列共n m個小格仔組成。有的格仔可以正常走,標為 有的格仔有陷阱不能走,標為 有的格仔比...