資訊學奧賽一本通 1251 仙島求藥(evd)

2021-10-10 13:05:11 字數 1472 閱讀 5508

【題目描述】

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

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

【輸入】

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

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

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

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

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

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

【輸出】

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

【輸入樣例】

8 8.@##…#

#…#.#

#.#.##…

…#.###.

#.#…#.

…###.#.

…#.…

.#…###

6 5..#.

.#……##.

….#…

…@9 6

.#…#.

.#.*.#

.####.

…#……#…

…#……#…

#.@.##

.#…#.

0 0【輸出樣例】108

-1【心得】還是熟悉的配方!還是熟悉的味道!

【ac**】

#include

#include

#include

#include

using

namespace std;

const

int n=25;

int m,n,ex,ey,cnt[n]

[n],q[n*n][2

],dir[4]

[2]=

,,,}

;char a[n]

[n];

void

bfs(

int x,

int y)}}

head++;}

cout<

<

}int

main()

if(a[i]

[j]==

'*')

//終點一般化}}

bfs(sx,sy);}

return0;

}

一本通題解 1251 仙島求藥

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

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...

資訊學奧賽一本通 小球(drop)

this drop is gonna last forever!許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...