检查soduko子矩阵

时间:2019-05-15 19:37:07

标签: c

我正在尝试为大小为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;
}

0 个答案:

没有答案