如何从数独的精确覆盖矩阵的一行中获得位置和值?

问题描述 投票:0回答:1

使用数独的精确覆盖矩阵,例如here,矩阵中的每一行都与数独网格中的位置(行,列)和一个值相关。

仅给出覆盖矩阵中的行数以及数独网格的大小(在这种情况下为9),用于确定该行所引用的行,列和值的算法是什么? (例如,第1行指的是第1行,第1列和值1,第12行指的是第1行,第2列,值3)

arrays algorithm math matrix multidimensional-array
1个回答
0
投票

我用Java编写了此文件,但确实可以解决问题,但是我仍然好奇是否有任何方法可以不使用循环,而这似乎是一个纯粹可以用数学表达的问题。

private int[] rowInGrid(int puzzleSize, int matrixRow) {
        // return the row, column and value correlating to a row in the cover matrix

        int row = 0;
        int col = 0;
        int val = 0;

        for (int i = 0; i < matrixRow; i++) {
            val++;

            if (val == puzzleSize) {
                col++;
                val = 0;
            }

            if (col == puzzleSize) {
                row++;
                col = 0;
            }
        }

        return new int[]{row,col,val};
    }

该函数采用拼图大小(宽度/高度/值的数量)和封面矩阵中的行号(例如0表示板的第一行和第一列中的第一个可能的值),并在董事会和价值。此函数全部为0索引。

© www.soinside.com 2019 - 2024. All rights reserved.