x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。
某坦克需要從a區到b區去(a,b區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短?
已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。
例如:a + - + -
- + - - +
- + + + -
+ - + - +
b + - + -
坦克車只能水平或垂直方向上移動到相鄰的區。
資料格式要求:
輸入第一行是乙個整數n,表示方陣的大小, 4<=n<100
接下來是n行,每行有n個資料,可能是a,b,+,-中的某乙個,中間用空格分開。
a,b都只出現一次。
要求輸出乙個整數,表示坦克從a區到b區的最少移動步數。
如果沒有方案,則輸出-1
例如:使用者輸入:
5a + - + -
- + - - +
- + + + -
+ - + - +
b + - + -
則程式應該輸出:
10資源約定:
峰值記憶體消耗 < 512m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
注:測試樣例過了,由於沒有oj可以提交,不清楚是對是錯。
#includeusing namespace std;
char a[100][100];
int count=0;
int n;
int x1,y1,x2,y2;
int dir[4][2]=,,,};
int visit[100][100]=;
void dfs(int x,int y,int& min)
int tx,ty;
for(int i=0;i<4;i++)
else if(a[i][j]=='b')
}} int min=10000;
dfs(x1,y1,min);
if(min==10000)
cout<<-1
cout
}
穿越雷區 藍橋杯 DFS BFS
題目描述 x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a ...
藍橋杯之穿越雷區 BFS
本題為2015年第六屆藍橋杯c語言a組試題,第4題。考點 廣度優先搜尋 bfs 廣搜一般用來解決 最短 最少 問題,需用到佇列。已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a b 坦克車只能水平或垂直方向上移動到相鄰的區。資料格式要求 輸入第一...
藍橋 穿越雷區
x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a b 坦克車...