Sudoku解决方案检查器遇到问题

时间:2018-11-06 18:35:25

标签: java

我在网上发现了一个有趣的编码挑战。任务是检查Sudoku程序的正确性。这是我编写的程序:

public static boolean check(int[][] sudoku) {
    String sudokuString = "";
    for(int[] a : sudoku)
      for(int b : a)
        sudokuString += b;
    for(int i = 0; i < 9; i++){
      for(int a = 1; a <= 9; a++){
        sudokuString = sudokuString.replaceFirst(Integer.toString(a), "");
      }
    }
    System.out.println(sudokuString);
    return sudokuString.length() == 0;
}

现在,我非常确定我的解决方案可以实现预期的效果,但是编码挑战网站却告诉我,它没有实现。我不明白为什么我的解决方案不正确。

我正在寻求您的帮助。

非常感谢您!

1 个答案:

答案 0 :(得分:2)

步骤1 了解Sudoku的规则。
数独是9x9的数字网格。 每个单元格可以包含一位整数值(1-9)。 网格的每一列必须一次恰好包含每个数字。 网格的每一行必须一次包含每个数字。 每个3x3网格必须一次恰好包含每个数字。

第2步 。请注意规则。
短语“必须一次准确地包​​含每个数字”表示Set

第3步 设计一种算法来解决该问题。
对于每一列,构造一组数字。 如果(在处理每列的最后)集合包含九个元素, 则该列符合Sudoku的规则。

对于每一行,构造一组数字。 如果(在处理每一行的最后)集合包含九个元素, 那么该行符合Sudoku的规则。

对于每个3x3网格,构造一组数字。 如果(在处理每个3x3网格结束时)该集合包含9个元素,则3x3网格符合Sudoku的规则。

第4步 。编写一些代码。
有。

编辑:添加了3x3网格信息。