🔥 09|全部实现源代码
grid = [
[61,25,28,44,38,40,21,2,93],
[12,32,50,76,70,52,64,62,89],
[13,84,37,65,49,31,71,97,45],
[14,24,34,59,100,9,15,83,94],
[51,30,35,23,60,48,27,88,75],
[99,3,36,46,56,20,8,11,42],
[90,72,33,54,98,96,79,57,77],
[6,73,63,47,26,80,19,68,86],
[67,78,39,53,5,82,66,58,85],
[69,43,4,7,1,18,95,55,29],
]
start, end = 12, 56
# 数值 → 坐标
pos = {grid[r][c]: (r, c) for r in range(10) for c in range(9)}
defneighbors(v):
r, c = pos[v]
res = []
# 右移 (+1)
if c + 1 < 9:
res.append(grid[r][c+1])
# 下移 (+10)
if r + 1 < 10:
res.append(grid[r+1][c])
return res
path = []
visited = set()
defdfs(v):
path.append(v)
visited.add(v)
if v == end:
returnTrue
for nv in neighbors(v):
if nv notin visited:
if dfs(nv):
returnTrue
path.pop()
visited.remove(v)
returnFalse
dfs(start)
print(path)