6 仙島求藥

2021-09-10 09:52:18 字數 2005 閱讀 6512

題目鏈結

題目

少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由 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為準,兩題庫通用。少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發...