题解 | #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

全部评论

相关推荐

06-27 15:29
门头沟学院 Java
点赞 评论 收藏
分享
06-18 13:28
已编辑
门头沟学院 Web前端
爱睡觉的冰箱哥:《给予你300的工资》,阴的没边了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 20:15
还能挽救吗?找同学帮忙看了一下&nbsp;字节怎么能如此对我
牛客26396789...:你这是严重红线,被发现你自己永远进不去,你那个同学直接走人,你还敢宣扬
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务