题解 | #Sudoku#
Sudoku
https://www.nowcoder.com/practice/78a1a4ebe8a34c93aac006c44f6bf8a1
dfs(二维数组)
遍历行
遍历列
找到为空的格子
从1-9遍历,填上任意可能的数
dfs(二维数组),结果为true,返回true
否则map[i][j] = 0;
遍历完1-9还没true,返回false
遍历完了,返回true
数独结果有2种可能,1.遍历完9*9,每次都碰到false就返回了,直到9行9列也是如此,数独无解
2.如果空格填的数使得其他空格无数可填,会在第三层循环中将map[i][j]设置为0,进行后面数字的遍历,这样也不会使得dfs无限循环,
如果9*9都遍历完了,说明找到了第一个可行的解
OPPO公司福利 1154人发布