2021年了,不用动脑筋解数独?Python让你一秒钟就能解决。
发布时间
阅读量:
阅读量
数独规则解析
在9×9的棋盘中,玩家需依据已给出的数字,推导出所有未填空格对应的数值,确保每一行、每一列以及每个由粗线划分的3×3宫格内均包含1至9的数字,且无重复现象。
算法思路
1、首先定位首个空白位置,依次尝试填入1至9之间的各个数值;
2、验证填入数值后的数独矩阵是否满足数独的规范要求,若无法满足,则继续尝试下一个可能的数值;
3、当填入的数值符合规范时,调用该函数进行递归操作,继续寻找下一个空白位置并进行数值尝试;
4、一旦某个空白位置填入错误数值,将导致后续某处无法填入任何有效数字,即无论尝试1至9中的哪个数字均不符合规则,此时需回溯至上一递归层级,重新选择下一个可能的数值并继续递归处理;
5、当所有空白位置均被填充完毕时,表示数独已成功求解,结束递归流程;
6、完成递归后,数独问题得到最终解答。
算法代码结构解析
# 找到下一个空格
def find_next(sudoku):
# 遍历数独
for x in range(9):
for y in range(9):
if sudoku[x][y] == 0:
return x, y # 返回空格的坐标
# 若没有空格,便返回 (-1, -1)
return -1,
全部评论 (0)
还没有任何评论哟~
