数独解决方法

我的数独解决方法有问题。 该程序是这样工作的; 开始时该板是空的,用户在板上添加了一些数字,然后点击Solve按钮,程序试图解决它。 除了如果我把相同的数字放在同一行,一切都可以正常工作。 因此,如果用户添加1,1,0,0 ... 0.在这个难题中,它不能解决它,因为它的两个1彼此相邻,并且将永远持续下去,试图找到一个令人振奋的东西,即使它不可解难题。 但是,如果它们都是0(空),它会立即解决它,就像Id将1和2放在左上角一样。 如果我只是放入一些随机数字,它会将其检测为无法解析(或者如果它是一个有效的拼图,将会解决它)

我在想,当theNumber == (row, col) equals thenNumber == (row+1, col) ,它应该return false因为它是一个重复的数字。

这是我试图在求解方法中添加的代码,显然没有成功。

if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
   return false;
}

非常感谢帮助


像这样验证拼图:

  • 创建一个由9个元素组成的布尔数组。
  • 遍历每一行,每列和9x9框。
  • 如果您读取一个数字,请将数组中的对应值设置为true。
  • 如果已经是真的抛出一个错误(不可能的谜题)。
  • 读取行,列或9x9框后,重置布尔数组。
  • 然后,如果验证成功,则调用求解方法。
  • 编辑:源代码

    public boolean checkPuzzle() {
        boolean[] nums = new boolean[9];
        for (int row = 0; row < panel.puzzleSize; row++) {
            for (int cell = 0; cell < panel.puzzleSize; cell++) {
                if (nums[puzzle[row][cell]]) return false;
                nums[puzzle[row][cell]] = true;
            }
            nums = new boolean[9];
        }
        for (int col = 0; col < panel.puzzleSize; col++) {
            for (int cell = 0; cell < panel.puzzleSize; cell++) {
                if (nums[puzzle[cell][col]]) return false;
                nums[puzzle[cell][col]] = true;
            }
            nums = new boolean[9];
        }
        for (int square = 0; square < panel.puzzleSize; square++) {
            int squareCol = panel.squareSize * (square % panel.squareSize);
            int squareRow = panel.squareSize * Math.floor(square / panel.squareSize);
            for (int cell = 0; cell < panel.puzzleSize; cell++) {
                int col = cell % panel.squareSize;
                int row = Math.floor(cell / panel.squareSize);
                if (nums[puzzle[squareCol + col][squareRow + row]]) return false;
                nums[puzzle[squareCol + col][squareRow + row]] = true;
            }
            nums = new boolean[9];
        }
        return true;
    }
    

    没有太多的时间来测试,但它可能有效(?)。 行/列变量namings可能不正确,因为我没有时间在您的代码中找到它,但它的工作与否无关紧要。

    链接地址: http://www.djcxy.com/p/70183.html

    上一篇: Sudoku solve method

    下一篇: onAttach activity is null