首页 > 解决方案 > 数独解决方案检查器遇到问题

问题描述

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

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;
}

现在我很确定我的解决方案做了它应该做的,但是编码挑战网站告诉我它不是。我不明白为什么我的解决方案不正确。

我在请求你的帮助。

非常感谢你!

标签: java

解决方案


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

步骤 2注意规则。
短语“必须恰好包含每个数字一次”意味着Set.

步骤 3设计一个算法来解决问题。
对于每一列,构造一组数字。如果(在处理每列结束时)该集合包含九个元素,则该列符合数独规则。

对于每一行,构造一组数字。如果(在处理每一行结束时)该集合包含九个元素,则该行符合数独规则。

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

步骤 4编写一些代码。
有在。

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


推荐阅读