題目描述
x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。
某坦克需要從a區到b區去(a,b區本身是安全區,沒有正能量或負能量特徵),怎樣走才能路徑最短?
已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。
例如:
a + - + -坦克車只能水平或垂直方向上移動到相鄰的區。- + - - +
- + + + -
+ - + - +
b + - + -
輸入
輸入第一行是乙個整數n,表示方陣的大小, 4<=n<100
接下來是n行,每行有n個資料,可能是a,b,+,-中的某乙個,中間用空格分開。
輸入保證a,b都只出現一次。
輸出
要求輸出乙個整數,表示坦克從a區到b區的最少移動步數。
如果沒有方案,則輸出-1
樣例輸入
copy
5a + - + -
- + - - +
- + + + -
+ - + - +
b + - + -
樣例輸出 copy
10題解一:bfs
#include#include#include
#include
#include
using
namespace
std;
int n,flag=0
;int vis[105][105
];char a[105][105
];int dir[4][2]=,,,};;
struct
node
;int check(int x,int
y)void bfs(int x,int
y) vis[tx][ty]=1
; node temp;
temp.x=tx;
temp.y=ty;
temp.step=now.step+1
; p.push(temp);}}
}}int
main()}}
bfs(s,e);
if(flag==0
) cout
<<-1
}//5//
a + - + -
//- + - - +
//- + + + -
//+ - + - +
//b + - + -
題解二:dfs
#include#include#include
using
namespace
std;
int n,flag=0,mn=99999999
;int vis[105][105],dir[4][2]=,,,};
char a[105][105
];int check(int x,int
y)
}void dfs(int x,int y,int
cnt)
else}}
}int
main()}}
vis[x][y]=1
; dfs(x,y,0);
if(flag==0
) cout
<<-1
cout
//system("pause");
return0;
}
藍橋杯 穿越雷區
x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a b 坦克車...
藍橋杯之穿越雷區 BFS
本題為2015年第六屆藍橋杯c語言a組試題,第4題。考點 廣度優先搜尋 bfs 廣搜一般用來解決 最短 最少 問題,需用到佇列。已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a b 坦克車只能水平或垂直方向上移動到相鄰的區。資料格式要求 輸入第一...
藍橋 穿越雷區
x星的坦克戰車很奇怪,它必須交替地穿越正能量輻射區和負能量輻射區才能保持正常運轉,否則將報廢。某坦克需要從a區到b區去 a,b區本身是安全區,沒有正能量或負能量特徵 怎樣走才能路徑最短?已知的地圖是乙個方陣,上面用字母標出了a,b區,其它區都標了正號或負號分別表示正負能量輻射區。例如 a b 坦克車...