我在网上发现了一个有趣的编码挑战。任务是检查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了解数独的规则。
数独是9x9的数字网格。
每个单元格可以包含一位整数值(1-9)。
网格的每一列必须一次包含每个数字。
网格的每一行必须一次恰好包含每个数字。
每个3x3网格必须一次恰好包含每个数字。
步骤2注意规则。
短语“必须一次准确地包含每个数字”表示Set
。
步骤3设计解决该问题的算法。
对于每一列,构造一组数字。
如果(在处理每列的最后)集合包含九个元素,
则该列符合Sudoku的规则。
对于每一行,构造一组数字。
如果(在处理每行的最后)集合包含九个元素,
那么该行符合Sudoku的规则。
对于每个3x3网格,构造一组数字。
如果(在处理每个3x3网格结束时)该集合包含9个元素,则3x3网格符合Sudoku的规则。
步骤4编写一些代码。
在。
编辑:添加了3x3网格信息。