1251:仙島求藥
時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 6817 通過數: 2910
【題目描述】
少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m×n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少的方格,而且那裡會有神秘人物等待著他。現在要求你來幫助他實現這個目標。
下圖 顯示了乙個迷陣的樣例及李逍遙找到仙藥的路線。
【輸入】
輸入有多組測試資料. 每組測試資料以兩個非零整數 m 和 n 開始,兩者均不大於20。m 表示迷陣行數, n 表示迷陣列數。接下來有 m 行, 每行包含n個字元,不同字元分別代表不同含義:
1)『@』:少年李逍遙所在的位置;
2)『.』:可以安全通行的方格;
3)『#』:有怪物的方格;
4)『*』:仙藥所在位置。
當在一行中讀入的是兩個零時,表示輸入結束。
【輸出】
對於每組測試資料,分別輸出一行,該行包含李逍遙找到仙藥需要穿過的最少的方格數目(計數包括初始位置的方塊)。如果他不可能找到仙藥, 則輸出 -1。
【輸入樣例】
8 8.@##…#
#…#.#
#.#.##…
…#.###.
#.#…#.
…###.#.
…#.…
.#…###
6 5..#.
.#……##.
….#…
…@9 6
.#…#.
.#.*.#
.####.
…#……#…
…#……#…
#.@.##
.#…#.
0 0【輸出樣例】108
-1思路:寬搜,增加了 起始點 終點 和目標點(需改為*->『.』)
#include
#include
#include
#include
using
namespace std;
const
int n =
3000
;//n需開大點
int r,c;
char map[n]
[n];
//用於儲存地圖
bool vis[n]
[n];
//標識是否訪問過的點
int dir[4]
[2]=
,,,}
;//四個方向座標
struct nodeq[n]
;void
bfs(
int sx,
int sy,
int ex,
int ey)
for(
int i=
0;i<
4;i++)}
head++;}
if(flag1)
printf
("-1\n");
}int
main()
if(map[i]
[j]==
'*')
}bfs
(sx,sy,ex,ey);}
return0;
}
2727 仙島求藥
總時間限制 1000ms 記憶體限制 65536kb 描述 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現...
zufeoj 仙島求藥
少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少...
6 仙島求藥
題目鏈結 題目 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由 m times nm n 個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥...