题解 | Sudoku
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
def check(x, y, v, board): for k, i in enumerate(board[x]): if i == v and k != y: return False for k, i in enumerate(board): if i[y] == v and k != x: return False m = (x // 3)*3 n = (y // 3)*3 for i in range(m, m+3): for j in range(n, n+3): if (i != x or j != y) and board[i][j] == v: return False return True def process(board): for i in range(9): for j in range(9): if board[i][j] == 0: for k in range(1, 10): board[i][j] = k if check(i, j, k, board) and process(board): return True board[i][j] = 0 return False return True while True: try: board = [] for i in range(9): board.append([int(i) for i in input().split()]) process(board) for i in board: print(" ".join([str(j) for j in i])) except: break