ぶんすう独
8818 ワード
leetcode 37. ぶんすう独参考覃超先生の解法
func solveSudoku(board [][]byte) {
if len(board) == 0 {
return
}
solve(board)
}
func solve(board [][]byte) bool {
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
//
if board[i][j] == '.' {
// 1-9
for c := '1'; c <= '9'; c++ {
// 1-9
if isValid(board, i, j, byte(c)) { //
//
board[i][j] = byte(c)
//
if solve(board) {
return true
} else { // ,
board[i][j] = '.'
}
}
}
// 1-9
return false
}
}
}
//
return true
}
func isValid(board [][]byte, row, col int, c byte) bool {
for i := 0; i < 9; i++ {
//
if board[i][col] == c {
return false
}
//
if board[row][i] == c {
return false
}
//
if board[3*(row/3)+i/3][3*(col/3)+i%3] == c {
return false
}
}
return true
}