題目鏈結
題目
少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由 m \times nm×n 個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少的方格,而且那裡會有神秘人物等待著他。現在要求你來幫助他實現這個目標。
輸入格式
第一行輸入兩個非零整數 mm 和 nn,兩者均不大於 2020。mm 表示迷陣行數, nn 表示迷陣列數。
接下來有 mm 行, 每行包含 nn 個字元,不同字元分別代表不同含義:
1) '@':少年李逍遙所在的位置;2) '.':可以安全通行的方格;3) '#':有怪物的方格;4) '*':仙藥所在位置。
輸出格式
輸出一行,該行包含李逍遙找到仙藥需要穿過的最少的方格數目(計數包括初始位置的方塊)。如果他不可能找到仙藥, 則輸出 -1−1。
樣例輸入1
8 8
.@##...#
#....#.#
#.#.##..
..#.###.
#.#...#.
..###.#.
...#.*..
.#...###
樣例輸出1
10
樣例輸入2
6 5
.*.#.
.#...
..##.
.....
.#...
....@
樣例輸出2
8
樣例輸入3
9 6
.#..#.
.#.*.#
.####.
..#...
..#...
..#...
..#...
#.@.##
.#..#.
樣例輸出3
-1
dfs(親測tle):
#include#includeusing namespace std;
///1) '@':少年李逍遙所在的位置;2) '.':可以安全通行的方格;3) '#':有怪物的方格;4) '*':仙藥所在位置。
char map[40][40];
int result=0;
int dir[4][2]= ,,,};
int row,col;
int endx,endy;
int isarrive=0;
int count=0;
void dfs(int x1,int y1,int step)
for(int i=0;i<4;i++)
if(map[i][j]=='*')}}
dfs(startx,starty,0);
if(!isarrive) cout<<-1<bfs:
#include#include#includeusing namespace std;
///1) '@':少年李逍遙所在的位置;2) '.':可以安全通行的方格;3) '#':有怪物的方格;4) '*':仙藥所在位置。
struct node
;queuea;
node start,e;
char map[40][40];
int result=0;
int dir[4][2]= ,,,};
int row,col;
int endx,endy;
void bfs()
if(map[i][j]=='*')}}
bfs();
}
2727 仙島求藥
總時間限制 1000ms 記憶體限制 65536kb 描述 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現...
zufeoj 仙島求藥
少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少...
C 仙島求藥
openj bailian 3726 計蒜客 t1212 注 兩題庫題意相同,但輸入輸出的格式不同。本題的題面以openj bailian 3726為準,兩題庫通用。少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發...