中级
八数码问题
未完成
中级参考
代码结构已给出,请填写 ____ 处
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
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199