题解 | #Sudoku#
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
hang, lie = 9, 9
a1= []
for i in range(hang):
atemp = list(map(int, input().strip().split(" ")))
a1.append(atemp)
def just1(hang,lie,arr,value):
if value in set(arr[hang]):
return False
if value in set([arr[i][lie] for i in range(9)]):
return False
starthang = hang//3*3
startlie = lie//3*3
if value in set([arr[i][j] for i in range(starthang,starthang+3) for j in range(startlie,startlie+3)]):
return False
else:
return True
def solve(arr):
for (i,j) in [(i,j) for i in range(9) for j in range(9)]:
if arr[i][j] == 0:
for k in range(1,10):
if just1(i,j,arr,k):
arr[i][j] = k
if not solve(arr):
arr[i][j] = 0
else:
break
else:
return False
return True
solve(a1)
for i in range(9):
for j in range(9):
print(a1[i][j],end=" ")
print()

