← 返回题库
中级

八数码问题

未完成
中级参考 代码结构已给出,请填写 ____ 处
def solve(____):
    start = str(____)
    end = str(____)
    from collections import deque
    def get_neighbors(____):
        idx = state.index(____)
        neighbors = []
        for di, dj in [(____, ____), (____, ____), (____, -____), (____)]:
            i, j = idx // ____, idx % ____
            ni, nj = i + di, j + dj
            if ____ <= ni < ____ and ____ <= nj < ____:
                nidx = ni * ____ + nj
                new_state = list(____)
                new_state[idx], new_state[nidx] = new_state[nidx], new_state[idx]
                neighbors.append('____'.join(____))
        return neighbors
    queue = deque([(____)])
    visited = {start}
    while queue:
        state, dist = queue.popleft()
        if state == end:
            print(____)
            return
        for neighbor in get_neighbors(____):
            if neighbor not in visited:
                visited.add(____)
                queue.append((____))
    print(____)

示例

输入
solve(123456078, 123456780)
期望输出
2
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码