我正在尝试为大小为3x3的子矩阵构建soduko检查器,但某些逻辑错误,因此我不确定。 将骰子值插入数组后,我对其进行排序,看看是否存在1-9的所有数字。 有什么建议或其他好听的方式吗?
int subMatrixCheck(int matrix[9][9])
{
int rows=0,cols=0;
int counter=0;
int result;
int block_of_rows=1;
int block_of_cols=1;
int column[9];
for (block_of_cols; block_of_cols<=NUMBER_OF_NXN; block_of_cols++) {
for (block_of_rows; block_of_rows<=NUMBER_OF_NXN; block_of_rows++) {
for (rows;rows<NUMBER_OF_NXN*block_of_rows;rows++) {
cols=NUMBER_OF_NXN*(block_of_cols-1);
for(cols; cols<NUMBER_OF_NXN*block_of_cols; cols++)
column[counter++] = matrix[rows][cols];
}
rows = NUMBER_OF_NXN*block_of_rows;
qsort(column, ROWS, sizeof(int), cmpfunc);
for (int i = 0; i < 9; i++)
{
if (column[i] != i + 1)
return 0;
else
{
return 1;
}
}
resetArray(column, 9);
}
cols = NUMBER_OF_NXN*block_of_cols;
block_of_rows=1;
rows=0;
}
return 1;
}
我在网上搜索了一个解决方案,但发现却失败了
int subMatrixCheck(int matrix[9][9])
{
int i=0;
int j=0;
for (int row = (i / 3) * 3; row < (i / 3) * 3 + 3; row++)
for (int col = (j / 3) * 3; col < (j / 3) * 3 + 3; col++)
if (row != i && col != j && matrix[row][col] == matrix[i] [j])
return 0;
return 1;
}