import sys
arr=[[0, 0, 5, 3, 0, 0, 0, 0, 0],
[8, 0, 0, 0, 0, 0, 0, 2, 0],
[0, 7, 0, 0, 1, 0, 5, 0, 0],
[4, 0, 0, 0, 0, 5, 3, 0, 0],
[0, 1, 0, 0, 7, 0, 0, 0, 6],
[0, 0, 3, 2, 0, 0, 0, 8, 0],
[0, 6, 0, 5, 0, 0, 0, 0, 9],
[0, 0, 4, 0, 0, 0, 0, 3, 0],
[0, 0, 0, 0, 0, 9, 7, 0, 0]]
def check(i, j, k, arr):
for n in range(0,9):
if arr[i][n]==k or arr[n][j]==k or arr[(i//3)*3+n//3][(j//3)*3+n%3]==k :return 0
return 1
def sudok(i,j,arr):
if i==9 :
print(arr)
sys.exit()
if arr[i][j]>0:sudok(i if j<8 else i+1,(j+1)%9,arr)
for k in range(1,10):
if check(i,j,k,arr) :
arr[i][j]=k
sudok(i if j<8 else i+1,(j+1)%9,arr)
arr[i][j]=0
sudok(0,0,arr)
python3 解数独
最新推荐文章于 2024-05-28 08:45:00 发布