總時間限制: 1000ms 記憶體限制: 65536kb
描述 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m×n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少的方格,而且那裡會有神秘人物等待著他。現在要求你來幫助他實現這個目標。
下圖 顯示了乙個迷陣的樣例及李逍遙找到仙藥的路線.
輸入 輸入有多組測試資料. 每組測試資料以兩個非零整數 m 和 n 開始,兩者均不大於20。m 表示迷陣行數, n 表示迷陣列數。接下來有 m 行, 每行包含n個字元,不同字元分別代表不同含義:
1) 『@』:少年李逍遙所在的位置;
2) 『.』:可以安全通行的方格;
3) 『#』:有怪物的方格;
4) 『*』:仙藥所在位置。
當在一行中讀入的是兩個零時,表示輸入結束。
輸出 對於每組測試資料,分別輸出一行,該行包含李逍遙找到仙藥需要穿過的最少的方格數目(計數包括初始位置的方塊)。如果他不可能找到仙藥, 則輸出 -1。
樣例輸入
8
8.@##...#
#....
#.##.
#.##..
..#.###.
#.#...
#...###.
#....#.*..
.#...###65
.*.#.
.#...
..##.
.....
.#...
....@96
.#..
#. .#.*.#
.####.
..#...
..#...
..#...
..#...
#.@.##
.#..
#. 0
0
樣例輸出
10 8
-1 本題和抓住那頭牛差不多都用的廣搜加剪枝,我的同學這題使用的佇列但我對佇列的應用不太熟,就沒有用,以後還是要加強佇列的學習。
#include
using
namespace
std;
struct nod[10000];
int n,m,p[100][100],i,j,kx,ky,jx,jy;
char a[100][100];
int x[4]=,y[4]=,s;
void se()
if(a[xx][yy]=='.')
a[xx][yy]='#',d[w].x=xx,d[w].y=yy,d[w].t=d[t].t+1,w++;
}
} t++;
}}int main()
se();
cout
2727 仙島求藥 Openjudge
2727 仙島求藥 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪...
zufeoj 仙島求藥
少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由m n個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥,顯然他應避開有怪物的方格,並經過最少...
6 仙島求藥
題目鏈結 題目 少年李逍遙的嬸嬸病了,王小虎介紹他去一趟仙靈島,向仙女姐姐要仙丹救嬸嬸。叛逆但孝順的李逍遙闖進了仙靈島,克服了千險萬難來到島的中心,發現仙藥擺在了迷陣的深處。迷陣由 m times nm n 個方格組成,有的方格內有可以瞬秒李逍遙的怪物,而有的方格內則是安全。現在李逍遙想盡快找到仙藥...