我在网上发现了一个有趣的编码挑战。任务是检查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;
}
现在,我非常确定我的解决方案可以实现预期的效果,但是编码挑战网站却告诉我,它没有实现。我不明白为什么我的解决方案不正确。
我正在寻求您的帮助。
非常感谢您!
答案 0 :(得分:2)
步骤1 了解Sudoku的规则。
数独是9x9的数字网格。
每个单元格可以包含一位整数值(1-9)。
网格的每一列必须一次恰好包含每个数字。
网格的每一行必须一次包含每个数字。
每个3x3网格必须一次恰好包含每个数字。
第2步 。请注意规则。
短语“必须一次准确地包含每个数字”表示Set
。
第3步 设计一种算法来解决该问题。
对于每一列,构造一组数字。
如果(在处理每列的最后)集合包含九个元素,
则该列符合Sudoku的规则。
对于每一行,构造一组数字。 如果(在处理每一行的最后)集合包含九个元素, 那么该行符合Sudoku的规则。
对于每个3x3网格,构造一组数字。 如果(在处理每个3x3网格结束时)该集合包含9个元素,则3x3网格符合Sudoku的规则。
第4步 。编写一些代码。
有。
编辑:添加了3x3网格信息。