Hier ist das Szenario:
// 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]);
Beispiel: Angenommen, ich habe eine 5 x 5 Matrix:
* * * * * // index 0 to 4
* * * * * // index 5 to 9
* * * * * // index 10 to 14.
* * * * * // index 15 to 19
* * * * * // index 20 to 24
Si getMatrix()
zurückkehren würden int[][]
wäre die Mittelpunktskoordinate dieser Matrix (2,2)
0-Index basiert. Aber da getMatrix()
gibt zurück. int[]
der zentrale Koordinatenindex c
es 12
.
Wenn die Höhe oder Breite der Matrix jedoch gerade ist, kann der Mittelindex einer der 2 oder 4 Mittelpunkte sein, wie in einer 6 x 6 Matrix gezeigt:
* * * * * *
* * * * * *
* * @ @ * *
* * @ @ * *
* * * * * *
* * * * * *
--> Das Zentrum ist eines der @
oben.
Wie würde ich den Zentrumsindex berechnen? c
eines m x n-Matrix ?