题解 | #Sudoku#
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
package main import ( "fmt" ) func solveSudoku(board [][]int) { solve(board) } func solve(board [][]int) bool { for i := 0; i < 9; i++ { for j := 0; j < 9; j++ { if board[i][j] == 0 { for k := 0; k <= 9; k++ { if isValid(board, i, j, k) { board[i][j] = k if solve(board) { return true } else { board[i][j] = 0 } } } return false } } } return true } func isValid(board [][]int, row, col, num int) bool { for i := 0; i < 9; i++ { if board[row][i] == num || board[i][col] == num { return false } if board[3*(row/3)+i/3][3*(col/3)+i%3] == num { return false } } return true } func main() { board := make([][]int, 9) for i:=0;i< len(board);i++ { board[i] = make([]int, 9) } for i:=0;i<9;i++ { for j:=0;j<9;j++ { num := 0 fmt.Scan(&num) board[i][j] = num } } solveSudoku(board) for i := 0; i < 9; i++ { for j := 0; j < 9; j++ { fmt.Printf("%d ", board[i][j]) } fmt.Println() } }
输出结果为:
5 9 2 4 8 1 7 6 3 4 1 3 7 6 2 9 8 5 8 6 7 3 5 9 4 1 2 6 2 4 1 9 5 3 7 8 7 5 9 8 4 3 1 2 6 1 3 8 6 2 7 5 9 4 2 7 1 5 3 8 6 4 9 3 8 6 9 1 4 2 5 7 9 4 5 2 7 6 8 3 1