x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。
某坦克需要從a區到b區去(a,b區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短?
已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。
例如:
a + - + -
- + - - +
- + + + -
+ - + - +
b + - + -
坦克車只能水平或垂直方向上移動到相鄰的區。
資料格式要求:
輸入第一行是乙個整數n,表示方陣的大小, 4<=n<100
接下來是n行,每行有n個資料,可能是a,b,+,-中的某乙個,中間用空格分開。
a,b都只出現一次。
要求輸出乙個整數,表示坦克從a區到b區的最少移動步數。
如果沒有方案,則輸出-1
例如:
使用者輸入:
5 a + - + -
- + - - +
- + + + -
+ - + - +
b + - + -
則程式應該輸出:
10資源約定:
峰值記憶體消耗(含虛擬機器) < 512m
cpu消耗 < 2000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
注意:主類的名字必須是:main,否則按無效**處理。
package 藍橋杯;
public
class 穿越雷區 ,,
,,};
//標記陣列
private
static boolean vis = new boolean[5][5];
//方向陣列
private
static
int next = ,,,};
//建立最大步數
private
static
int max = 1000;
//建立統計正號的變數
private
static
int z = 0;
private
static
int f = 0;
public
static
void
f(int x,int y,int step)else}}
}public
static
void
main(string args) }}
system.out.println(max);
}}
藍橋杯 2015決賽 穿越雷區(bfs
x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 坦克車只能水平...
藍橋杯2015決賽 穿越雷區 bfs
題目描述 x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a ...
藍橋杯2015決賽 穿越雷區 (bfs)
一道題,居然卡在了輸入資料上,我去。搞了半天也不知道怎麼把資料完整的輸進去。這一次漲姿勢了。方向 int vis 105 105 標記是否走過 int n struct node queueq intbfs int x,int y for int i 0 i 4 i return 1 intmain...