Advertisement

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)

还没有任何评论哟~