<分区>
我正在做一个数独解算器,我需要检查当前扇区中是否有数字,我已经检查了数字的行和列,所以剩下的就是扇区。
整个拼图是 6x6,有 3 个(每个扇区 2 行)行扇区和 2 个(每个扇区 3 列)列扇区。
我这样检查行和列:
for (int i = 0; i < 6; i++)
{
if (Matrica[i][column] == CurrentNumber) return 0;
if (Matrica[row][i] == CurrentNumber) return 0;
}
因为它是一个 6x6 矩阵,扇区是 2x3(或 3x2 不知道格式)
该扇区中只剩下 2 个数字,我需要从我的行号和列号中找出我应该检查哪些地方,但我没有找到解决方案,我不知道该怎么做。
解决方案:
对于任何感兴趣的人,我都是这样检查的:
int Tikrinimas(int number, int Matrica[][6], int row, int column)
{
int sectorRow = 2 * (row / 2);
int sectorCol = 3 * (column / 3);
int row1 = (row + 1) % 2;
int col1 = (column + 2) % 3;
int col2 = (column + 4) % 3;
/* Check for the value in the given row and column */
for (int i = 0; i < 6; i++)
{
if (Matrica[i][column] == number) return 0;
if (Matrica[row][i] == number) return 0;
}
/* Check the remaining two spaces in this sector */
if (Matrica[row1 + sectorRow][col1 + sectorCol] == number) return 0;
if (Matrica[row1 + sectorRow][col2 + sectorCol] == number) return 0;
return 1;
}
在一个函数中,这将检查当前设置的数字在该位置是否可行