gpt4 book ai didi

java - 如何在 6x6 数独中检查 3x2 矩形框;

转载 作者:行者123 更新时间:2023-11-30 05:39:22 25 4
gpt4 key购买 nike

(已解决)我正在尝试在 java 图形中制作 6x6 数独,但我在检查 3x2 框时遇到一些问题,我尝试了一些方法,但它仅适用于 9x9 数独。如果 3x3 框中已经有输入的数字,则此方法检查数独网格 9x9。如果不存在则返回 true,否则返回 false。

数独规则:

  1. 每行没有重复的数字
  2. 每列中没有重复的数字
  3. 每个框中没有重复的数字
<小时/>
private boolean isInBox(int row, int col, int number) {
int r = row - row % 3; //check the row a group of three
int c = col - col % 3; //Check the column a group of three
//cycle the boxes
for (int i = r; i < r + 3; i++){
for (int j = c; j < c + 3; j++){
if (solution_grid[i][j] == number){
return false; // if the number exist in the box it will exit with a negative response
}
}
}
return true; //if everything goes right it will give a positive response
}
<小时/>

带有盒子的 6x6 数独示例

 0 0 0|0 0 0
0 0 0|0 0 0
-------------
0 0 0|0 0 0
0 0 0|0 0 0
-------------
0 0 0|0 0 0
0 0 0|0 0 0

最佳答案

基本上,该方法使用模运算符来计算行数和列数。然后它将“解决方案”数组中的所有元素与给定的数字进行比较。

可以使用该方法来确定所有数字是否不同(通过对所有数字再次循环运行该方法)。这是非常低效的。

相反:创建一张 map 。使用所有可能的数字(例如,小数独为 1 到 9)作为键。该值是 boolean 值,并且为 false。然后迭代求解一次。对于解决方案中找到的每个数字,检查相应的 map 值是否为 false。如果是这样,请将其更改为 true。如果您发现一个值已经为真,您就知道该数字在您的解决方案中至少出现了两次。

注意:我的回答中没有提及数独网格的大小。因此,只需将其调整为 6 X 6 所需的“尺寸”和数字即可。

关于java - 如何在 6x6 数独中检查 3x2 矩形框;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55980296/

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