我正在创建一个数独生成器,使用“蛮力”随机方法。我已经能够使用以下代码检查 x / y 轴是否有重复数字:
for(l=0; l<9; l++){//Makes all vertical work.
if(sudoku[l][j] == temp){
isUsed=true;
}
}
for(m=0; m<9; m++){//makes all horizontal work
if(sudoku[i][m] == temp){
isUsed=true;
}
}
我决定实施“盒子”或“区域”检查(从原点开始检查每个 3x3 方格),但我似乎无法完全理解代码。这是我到目前为止所做的。我只是不太清楚我的逻辑错误在哪里(作为记录,程序将使用此代码运行,但不会正确检查区域)
rowbase = i-(i%3);
if(i==2 || i==5 || i==8 ){
if(rowbase == 0 || rowbase == 3 || rowbase == 6){
isUsed= RegionCheck.RegCheck(rowbase, sudoku);
}
}
regionCheck.java 的内容:
boolean okay = false;
int[] regionUsed = new int[9];
int i=0, j=0, regionTester=0, counter=0, numcount;
for (i=regionTester; i<regionTester+3; i++){
for (; j<3; j++){
regionUsed[counter]=sudoku[i][j];
counter++;
}
}
for(i=0; i<9; i++){
numcount=regionUsed[i];
for(j=0; j<9; j++){
if(j==i){
//null
}
else if(numcount == regionUsed[j]){
okay=false;
}
}
}
return okay;
一路走来,我只是迷路了,不了解如何“选择”一个区域并遍历区域。
完整来源:http: //ideone.com/FYLwm
任何关于如何“选择”一个区域进行测试然后迭代它的帮助将不胜感激,因为我真的没有想法。