# # # @param board char字符型二维数组 # @return void # class Solution: def is_vai(self,row,col,num,board): """ 判断当前值是否符合要求(行列块不重复) """ blockrow = (row//3)*3 blockcol = (col//3)*3 num = str(num)#注意数据类型 for i in range(9): if (board[row][i] == num )or(board[i][col] == num): return False if board[blockrow + i//3][blockcol + i%3] == num: return False return True def solveSudoku(self , board ): # write code here def get_num(board,row,col): #行结束返回 if row == 9: return True #列结束来到下一行 if col == 9: return get_num(board,row+1,0) #未填写则填写 if board[row][col] != '.': return get_num(board,row,col+1) #1-9依次判断是否符合 for i in range(9): if self.is_vai(row,col,i+1,board): board[row][col] = str(i+1)#写入数据 #判断是否能找到使下一行成立的数字,不存在写回‘.’ if get_num(board,row,col+1): return True else: board[row][col] = '.' #未找到返回f return False get_num(board,0,0) return board