题解 | #小红走象步#

小红走象步

https://www.nowcoder.com/practice/af718625a87b4337b46c27ef64eb4db4

小红走象步

当象处于时,共有四种可能的走法

  • ,条件是仍然在棋盘内,且处没有兵阻挡
  • ,条件是仍然在棋盘内,且处没有兵阻挡
  • ,条件是仍然在棋盘内,且处没有兵阻挡
  • ,条件是仍然在棋盘内,且处没有兵阻挡

从给定的起点开始进行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)
全部评论

相关推荐

11-07 16:07
深圳大学 运营
前端飞升:学长,阿里不是卡双非吗,我深也能去吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务