Python题解 | #Sudoku#
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
def check(matrix, row, col, val): for i in range(9): if matrix[i][col] == val: return False for j in range(9): if matrix[row][j] == val: return False area_row = (row // 3) * 3 area_col = (col // 3) * 3 for x in range(area_row, area_row + 3): for y in range(area_col, area_col + 3): if matrix[x][y] == val: return False return True def dfs(n): if n == 81: return True row = n // 9 col = n % 9 if matrix[row][col] != 0: return dfs(n + 1) else: for a in range(1, 10): if check(matrix, row, col, a): matrix[row][col] = a if dfs(n + 1): return True matrix[row][col] = 0 return False while True: try: matrix = [[0] * 9 for _ in range(9)] for i in range(9): matrix[i] = list(map(int, input().strip().split())) dfs(0) for i in range(9): for j in range(8): print(matrix[i][j], end=' ') print(matrix[i][-1]) except: break