当象处于时,共有四种可能的走法
,条件是
仍然在棋盘内,且
处没有兵阻挡
,条件是
仍然在棋盘内,且
处没有兵阻挡
,条件是
仍然在棋盘内,且
处没有兵阻挡
,条件是
仍然在棋盘内,且
处没有兵阻挡
从给定的起点开始进行BFS, 一直到遍历到
,或者队列为空为止。
d = ((1, 1, 2, 2), (1, -1, 2, -2), (-1, 1, -2, 2), (-1, -1, -2, -2))
def solve(testcase):
n, m = MI()
k = II()
A = [[True for _ in range(m)] for _ in range(n)]
for _ in range(k):
x, y = GMI()
A[x][y] = False
sx, sy, tx, ty = GMI()
q = deque()
q.append((sx, sy))
vis = [[False for _ in range(m)] for _ in range(n)]
vis[sx][sy] = True
res = 0
while q:
kk = len(q)
for _ in range(kk):
x, y = q.popleft()
if x == tx and y == ty:
print(res)
return
for dx, dy, ddx, ddy in d:
nx, ny, nnx, nny = x + dx, y + dy, x + ddx, y + ddy
if 0 <= nnx < n and 0 <= nny < m and A[nx][ny] and not vis[nnx][nny]:
vis[nnx][nny] = True
q.append((nnx, nny))
res += 1
print(-1)
for testcase in range(1):
solve(testcase)

京公网安备 11010502036488号