蓝桥杯 DFS Python 玩具蛇

求大家帮忙分析一下我这代码写的哪里出问题了,
刚开始学DFS不怎么会,
我debug了半小时也没发现问题,
但是运行结果不对。
灰常感谢!

题目在这:(也可访问链接)

img

我的代码:

lst = [[1] * 4 for _ in range(4)]
res = 0


def dfs(i, j):
    global res
    if lst[i][j] == 16:
        res += 1
        return
    for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
        x = i + dx
        y = j + dy
        if 0 <= x < 4 and 0 <= y < 4 and lst[x][y] == 1:
            lst[x][y] = lst[i][j] + 1
            dfs(x, y)
            lst[x][y] = 1


for i in range(4):
    for j in range(4):
        dfs(i, j)
print(res)

答案是500多,我运行出来3000多……
劳烦帮忙找一下问题所在,灰常感谢灰常感谢~

res定义在外面看看,对res初始化下

你自己上网把文字复制下来搜搜呗,或者GPT

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^