链接: https://pan.baidu.com/s/1uW8n5Q06k4ete994VGHj1Q
提取码: 9994
链接: https://pan.baidu.com/s/1uW8n5Q06k4ete994VGHj1Q
提取码: 9994
using System;
using System.Collections;
public class Test
{
public static int Main()
{
char[][] chessboard = new char[8][];
for(int i=0;i<8;i++){
String str = Console.ReadLine();
chessboard[i]=str.ToCharArray();
}
int step = chess(chessboard);
Console.WriteLine(step);
return step;
}
public static int chess(char[][] chessboard) {
int vx = 0, vy = 0, cx = 0, cy = 0;
for (int x = 0; x <8; x++) {
for (int y = 0; y < 8; y++) {
if (chessboard[x][y] == 'v') {
vx = x;
vy = y;
}
if (chessboard[x][y] == 'c') {
cx = x;
cy = y;
}
}
}
return bfs(vx,vy,cx,cy,chessboard);
}
public static int bfs(int vx, int vy, int cx, int cy, char[][] chessboard) {
Queue queue = new Queue();
int step = -1;
queue.Enqueue(vx);
queue.Enqueue(vy);
while (queue.Count > 0) {
step = step + 1;
int size = queue.Count/2;
for (int s = 0; s < size; s++) {
int qx = (int)queue.Dequeue();
int qy = (int)queue.Dequeue();
if (chessboard[qx][qy] == 'c') {
return step;
}
chessboard[qx][qy] = 'x';
// 向左搜索,x变化,y不变化
for (int x = qx - 1; x >= 0; x--) {
if (chessboard[x][qy] == 'x') {
break;
}
queue.Enqueue(x);
queue.Enqueue(qy);
}
// 向右搜索
for (int x = qx + 1; x <= 7; x++) {
if (chessboard[x][qy] == 'x') {
break;
}
queue.Enqueue(x);
queue.Enqueue(qy);
}
// 向上搜索
for (int y = qy - 1; y >= 0; y--) {
if (chessboard[qx][y] == 'x') {
break;
}
queue.Enqueue(qx);
queue.Enqueue(y);
}
// 向下搜索
for (int y = qy + 1; y <= 7; y++) {
if (chessboard[qx][y] == 'x') {
break;
}
queue.Enqueue(qx);
queue.Enqueue(y);
}
}
}
return -1;
}
}