Java 为什么下面的数组返回false?
我试图解决给定的问题: “数独是一个数字布局难题。其目的是用数字填充9×9的网格,使每列、每行以及构成网格的9个3×3子网格中的每一个都一次性包含1到9的所有数字 实施一种算法,根据上述布局规则检查给定的数字网格是否表示有效的数独游戏。请注意,网格表示的游戏不必是可解的。” 示例网格为:Java 为什么下面的数组返回false?,java,algorithm,Java,Algorithm,我试图解决给定的问题: “数独是一个数字布局难题。其目的是用数字填充9×9的网格,使每列、每行以及构成网格的9个3×3子网格中的每一个都一次性包含1到9的所有数字 实施一种算法,根据上述布局规则检查给定的数字网格是否表示有效的数独游戏。请注意,网格表示的游戏不必是可解的。” 示例网格为: grid = [['.', '.', '.', '1', '4', '.', '.', '2', '.'], ['.', '.', '6', '.', '.', '.', '.', '.', '
grid = [['.', '.', '.', '1', '4', '.', '.', '2', '.'],
['.', '.', '6', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '1', '.', '.', '.', '.', '.', '.'],
['.', '6', '7', '.', '.', '.', '.', '.', '9'],
['.', '.', '.', '.', '.', '.', '8', '1', '.'],
['.', '3', '.', '.', '.', '.', '.', '.', '6'],
['.', '.', '.', '.', '.', '7', '.', '.', '.'],
['.', '.', '.', '5', '.', '.', '.', '7', '.']]
预期的结果是真实的
我编写了以下代码来解决此问题:
boolean sudoku2(char[][] grid) {
for(int i =0; i < 9 ; i++){
char [] zeroTab = new char[]{'0','0','0','0','0','0','0','0','0'} ;
char [] zeroTab1 = new char[]{'0','0','0','0','0','0','0','0','0'} ;
for(int g = 0; g < 9; g++){
if(grid[i][g] != '.'){
Integer k = Integer.parseInt(String.valueOf(grid[i][g]));
if(zeroTab[k-1] == '0'){
zeroTab[k-1] = grid[i][g];
}
else return false;
}
if(grid[g][i] != '.'){
Integer c = Integer.parseInt(String.valueOf(grid[g][i]));
if(zeroTab1[c-1] == '0'){
zeroTab1[c-1] = grid[g][i];
}
else return false;
}
}
}
return true;
数字3在中下部的方形网格中出现两次
(在我看来,您根本没有编写任何代码来测试方形子网格)您尝试过通过代码进行调试吗?特别是,您可以在这两个
return false
语句上设置断点,并查看它返回false的点。我希望任何试图帮助您的人从一开始就必须做到这一点,因此您这样做也是有意义的。顺便说一句,将传入网格表示为string[]
,这样您的测试就不需要任何逗号或引号了……我想我的问题更多的是理解一个问题,而不是代码。我不知道为什么我的代码应该返回false而不是true。我一遍又一遍地查看这个数组,仍然找不到它返回false的原因。哦,在这种情况下,这实际上是关于数独而不是代码的。如果你能编辑这篇文章,让它更清晰,那会有帮助的。(这也是堆栈溢出的话题,但我可以理解为什么您可能没有看到这一点。)正如Erwin Smout所指出的,底部中心3x3网格有3次。感谢您的帮助!下次我会努力做得更好。
[[".",".",".",".",".",".","5",".","."],
[".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."],
["9","3",".",".","2",".","4",".","."],
[".",".","7",".",".",".","3",".","."],
[".",".",".",".",".",".",".",".","."],
[".",".",".","3","4",".",".",".","."],
[".",".",".",".",".","3",".",".","."],
[".",".",".",".",".","5","2",".","."]]