解决数独游戏的回溯

富国阮宝

昨天我刚刚学会了回溯,我很困惑。在这个部分

if y == 9:
    if x == 8:
        display(s)
        return 1
    else:
        sudoku(s,x+1,0)

我使用return停止运行程序,但print(sudoku(s,0,0))仍显示None值,而不是1谁能找出原因?

s = [[5,3,0,0,7,0,0,0,0],
     [6,0,0,1,9,5,0,0,0],
     [0,9,8,0,0,0,0,6,0],
     [8,0,0,0,6,0,0,0,3],
     [4,0,0,8,0,3,0,0,1],
     [7,0,0,0,2,0,0,0,6],
     [0,6,0,0,0,0,2,8,0],
     [0,0,0,4,1,9,0,0,5],
     [0,0,0,0,8,0,0,7,9]]


def display(s):
    for i in s:
        print(*i)


def checkvalid(s,x,y,k):
    for i in range(9):
        if s[x][i] == k or s[i][y] == k:
            return False
    for i in range(x//3*3, x//3*3+3):
        for j in range(y//3*3, y//3*3+3):
            if s[i][j] == k:
                return False
    return True


def sudoku(s,x,y):
    if y == 9:
        if x == 8:
            display(s)
            return 1
        else:
            sudoku(s,x+1,0)
    elif s[x][y] == 0:
        for k in range(1,10):
            if checkvalid(s,x,y, k):
                s[x][y] = k
                sudoku(s,x,y+1)
                s[x][y] = 0
    else:
        sudoku(s,x,y+1)


print(sudoku(s,0,0))
唐·富马雷

这是因为您sudoku()递归调用。因此,您返回1到最后一个调用者,该调用者sudoku()本身来自elif/else路径之一。在这些路径中,您不会返回值。相反,您if/elif/else可以通过返回默认值离开该块并退出该函数None

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

回溯算法解决数独

来自分类Dev

通过回溯解决数独(java)

来自分类Dev

如何通过回溯和递归来解决数独?

来自分类Dev

使用回溯法在Java中解决数独问题

来自分类Dev

回溯数独在Haskell

来自分类Dev

回溯数独在Haskell

来自分类Dev

在C语言中使用回溯算法解决数独问题

来自分类Dev

打印有效,但使用回溯解决数独时返回值为None

来自分类Dev

显示逐步解决数独

来自分类Dev

如何使带有回溯算法的数独求解器返回?

来自分类Dev

回溯数独求解器始终返回初始板

来自分类Dev

递归回溯如何工作?电脑数独求解器

来自分类Dev

试图了解递归/回溯,简单的数独示例

来自分类Dev

使用贪婪方法找到游戏熄灭的解决方案(回溯)

来自分类Dev

用C ++解决数独难题

来自分类Dev

用C ++解决数独难题

来自分类Dev

数独解算器挂起一些游戏

来自分类Dev

数独解算器挂起一些游戏

来自分类Dev

如何优化数独求解器回溯的函数运行速度

来自分类Dev

数独9盒(3x3)C中的递归回溯所有组合

来自分类Dev

我的回溯算法有什么问题?(数独解算器,stackoverflow)

来自分类Dev

解决数独的算法的时间复杂度是多少?

来自分类Dev

Java:递归数独解决方案计数算法

来自分类Dev

使用多处理的数独解决方案

来自分类Dev

解决难题后,如何停止产生数独板?

来自分类Dev

数独在序言上花费太长时间解决

来自分类Dev

使用A *(A-Star)搜索解决数独难题

来自分类Dev

解决迷宫回溯

来自分类Dev

数独游戏中用户输入的有效方法