仙島求藥(一)

2022-05-22 20:33:10 字數 2241 閱讀 8294

仙島求藥(一)

難度級別:b; 執行時間限制:1000ms; 執行空間限制:256000kb; **長度限制:2000000b

試題描述

少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m×n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少的方格,而且那裡會有神秘人物等待著他。現在要求你來幫助他實現這個目標。

下圖顯示了乙個迷陣的樣例及李逍遙找到仙藥的路線。

輸入

輸入有多組測試資料. 每組測試資料以兩個非零整數 m 和 n 開始,兩者均不大於20。m 表示迷陣行數, n 表示迷陣列數。接下來有 m 行, 每行包含n個字元,不同字元分別代表不同含義: 

1) 『@』:少年李逍遙所在的位置;

2) 『.』:可以安全通行的方格;

3) 『#』:有怪物的方格;

4) 『*』:仙藥所在位置。

當在一行中讀入的是兩個零時,表示輸入結束。

輸出

對於每組測試資料,分別輸出一行,該行包含李逍遙找到仙藥需要穿過的最少的方格數目(計數包括初始位置的方塊)。如果他不可能找到仙藥, 則輸出 -1。

輸入示例

8 8.@##...#

#....#.#

#.#.##..

..#.###.

#.#...#.

..###.#.

...#.*..

.#...###

6 5.*.#.

.#...

..##.

.....

.#...

....@

9 6.#..#. 

.#.*.# 

.####. 

..#... 

..#... 

..#... 

..#... 

#.@.## 

.#..#. 

0 0輸出示例108

-1題解

這是一道典型的dfs(電風扇),還有什麼可以說?

**如下

1 #include2 #include3

using

namespace

std;

4char map[101][101];5

int a[101][101

],ans,m,n;

6int l=0;7

int c[101];8

void res(int u,int v,int i,intj)9

18if(u>0&&map[u-1][v]!='

#'&&a[u-1][v]>t)

1923

if(v>0&&map[u][v-1]!='

#'&&a[u][v-1]>t)

2428

if(u1&&map[u+1][v]!='

#'&&a[u+1][v]>t)

2933}34

intmain()

3550

if(map[i][j]=='

*') //

結束的地方

5155}56

}57 memset(a,1,sizeof(a)); //

memset的意思是賦值

58 a[startx][starty]=0; //

設開始的地方訪問過

59 res(startx,starty,endx,endy); //

開始遞迴

60if(ans!=0) c[l]=ans; //

判斷是否可以走出 可以

61else c[l]=-1; //

不可以

62 l++; //

計數用

63 ans=0; //

清零 64}65

for(int i=0;i//

輸出 66 }

謝謝大家!

2727 仙島求藥

總時間限制 1000ms 記憶體限制 65536kb 描述 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現...

zufeoj 仙島求藥

少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少...

6 仙島求藥

題目鏈結 題目 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由 m times nm n 個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥...