编写一个程序,通过已填充的空格来解决数独问题。
一个数独的解法需遵循如下规则:
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
空白格用 ‘.’ 表示。
题解:利用回溯法解数独,枚举所有可能的情况,找出数独的解,为了减少回溯的情况,我们需要维护三个数组分别记录每一横排已经出现的数,每一竖排已经出现的数,和每个方格中已经出现的数,这样可以提前排除掉不能再选择的数。
//回溯法解数独
class Solution {
/**
* 二维数组{@code row}、{@code column},三维数组{@code grid}用于记录某行、某列、某个方格中已填入的数字
* {@code fill}用于记录待被填充的空格位置
*/
boolean[][]row=new boolean[9][9];
boolean[][]column=new boolean[9][9];
boolean[][][]grid=new boolean[3][3][9];
List<int[]>fill