gpt4 book ai didi

java - 为什么下面的数组返回 false?

转载 作者:行者123 更新时间:2023-12-02 09:01:30 25 4
gpt4 key购买 nike

我正在尝试解决给定的问题:

“数独是一种数字放置谜题。目标是用数字填充 9 × 9 网格,使得每一列、每一行以及构成网格的 9 个 3 × 3 子网格中的每一个都填满数字all 一次包含从 1 到 9 的所有数字。

实现一种算法,根据上述布局规则检查给定的数字网格是否代表有效的数独谜题。请注意,网格表示的谜题不一定是可解决的”网格示例为:

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;

}

并且它通过了 17/20 测试。对于下面的网格,我的代码返回 true,我不知道为什么这里的预期结果是 false。有人可以向我解释一下为什么会这样吗?

[[".",".",".",".",".",".","5",".","."], 
[".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."],
["9","3",".",".","2",".","4",".","."],
[".",".","7",".",".",".","3",".","."],
[".",".",".",".",".",".",".",".","."],
[".",".",".","3","4",".",".",".","."],
[".",".",".",".",".","3",".",".","."],
[".",".",".",".",".","5","2",".","."]]

最佳答案

数字 3 在中下方格中出现两次。

(在我看来,您根本没有编写任何代码来测试方形子网格)

关于java - 为什么下面的数组返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com