注意:前面有错误的代码。你已经被警告过了。
此代码遍历数独游戏中所有 3x3 方格中的所有元素。下面显示的方法是它获取每个正方形的左上角元素的坐标,然后遍历该正方形中的每个元素。这意味着总共需要 4 个“for”循环来访问正确的索引,然后是另一个“for”循环来执行正确的操作。
这段代码可以工作(如果收回的代码被放入),但它看起来很乱,很难阅读。有没有更好的方法来消除这些嵌套的“for”循环?
提前致谢。
void Sudoku::updateSquares(int grid[9][9], int possibleSolutions[9][9][10])
{
for (int i = 0; i < 9; i += 3)
{
for (int j = 0; j < 9; j += 3) //for every square:
{
//Other code
//...
//Other code
//updates the possibleSolutions array
for (int k = 0; k < 3; k++)
{
for (int l = 0; l < 3; l++) //for every element in every square:
{
if(grid[i+k][j+l] != 0)
continue;
for (int n = 0; n < 10; n++)
{
if(possibleSolutions[i+k][j+l][n] != 0 && numbers[n] == 0)
{
possibleSolutions[i+k][j+l][n] = 0;
possibleSolutions[i+k][j+l][0] -= 1; //reduce the size, which is held in [][][0]
}
}
}
}
}
}
}