java - 数独解决方案检查器遇到问题
问题描述
我在网上发现了一个有趣的编码挑战。任务是检查数独程序的正确性。所以这是我写的程序:
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了解数独规则。
数独是一个 9x9 的数字网格。每个单元格可能包含一位整数值 (1 - 9)。网格的每一列必须包含每个数字恰好一次。网格的每一行必须包含每个数字恰好一次。每个 3x3 网格必须包含每个数字恰好一次。
步骤 2注意规则。
短语“必须恰好包含每个数字一次”意味着Set
.
步骤 3设计一个算法来解决问题。
对于每一列,构造一组数字。如果(在处理每列结束时)该集合包含九个元素,则该列符合数独规则。
对于每一行,构造一组数字。如果(在处理每一行结束时)该集合包含九个元素,则该行符合数独规则。
对于每个 3x3 网格,构造一组数字。如果(在处理每个 3x3 网格结束时)该集合包含九个元素,则 3x3 网格符合数独规则。
步骤 4编写一些代码。
有在。
编辑:添加了 3x3 网格信息。