Вот сценарий:
// getMatrix() returns int[]. It is 1-d
// I wish it was 2d.
int[] mat = MyMatrix.getMatrix();
// get height and width of the matrix;
int h = MyMatrix.height;
int w = MyMatrix.width;
// calculate the center index of the matrix
int c = ... // need help here
// manipulate the center element of the matrix.
SomeClass.foo(mat[c]);
Пример. Предположим, у меня есть матрица 5 x 5:
* * * * * // index 0 to 4
* * * * * // index 5 to 9
* * * * * // index 10 to 14.
* * * * * // index 15 to 19
* * * * * // index 20 to 24
Если бы getMatrix()
вернул int[][]
, координата центра этой матрицы была бы (2,2)
0-index based. Но поскольку getMatrix()
возвращает int[]
, индекс центральной координаты c
равен 12
.
Однако, если высота или ширина матрицы является четной, индекс центра может иметь один из 2 или 4 центров, как показано в матрице 6 x 6:
* * * * * *
* * * * * *
* * @ @ * *
* * @ @ * *
* * * * * *
* * * * * *
-> Центром является любой из @
выше.
Как рассчитать для индекса центра c
матрицы m x n ?