题解 | #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
查看16道真题和解析