#
# 
# @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