一、数独的规则
横排、竖排以及3X3的格子里均为1-9,且相互不同。
二、具体思路
利用函数迭代,在确定(i,j)位置的数时,遍历它后面的所有位置,如果没有冲突,即可确定,如有冲突则先确定(i,j)后面位置上的值。最主要的是设计好(i,j)与其后面一位可能是(i,j+1)或(i+1,0)的影响关系,而不用去管具体是怎么实现的,感觉这就是迭代的精髓。
三、具体代码和解释
#首先写一个判断某行某列能否为某个值得判断函数,
def check(i, j, k, matrix):#其中i代表行,j代表列,k代表某个固定值,arr为此刻的矩阵
for n in range(0,9):#n作为循环值,遍历第i行所有元素;遍历第j列所有元素;遍历在(i,j)此位置所在的3X3格子里的所有元素
if matrix[i][n]==k or matrix[n][j]==k or matrix[(i//3)*3+n//3][(j//3)*3+n%3]==k :return 0#判断如果有K这个值,则(i,j)位置上不可填入k
return 1#否则(i,j)位置上可填入k
def sudok(i,j, matrix):#主函数 i代表行,j代表列,matrix代表数独
if i==9 :#最终