题解 | #Sudoku#
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
#递归真好用啊 import copy def dif(l): ls=[] for i in range(1,10): if i not in l: ls.append(i) return ls dpwc=[] def fun1(dp1): global dpwc for i in range(9): for j in range(9): if dp1[i][j]==0: ls1=dif(dp1[i]) ls2=dif([dp1[k][j] for k in range(9)]) r,c=(i//3)*3,(j//3)*3 tmp=[] for ii in range(r,r+3): for jj in range(c,c+3): tmp.append(dp1[ii][jj]) ls3=dif(tmp) canl=[] for x in ls1: if x in ls2 and x in ls3: canl.append(x) for x in canl: dp2=copy.deepcopy(dp1) dp2[i][j]=x fun1(dp2) return dpwc=dp1 dp=[list(map(int,input().split())) for _ in range(9)] fun1(dp) for i in range(9): print(" ".join(map(str,dpwc[i])))