Ich habe Matrix und möchte es gegen den Uhrzeigersinn drehen. zum Beispiel:Java - wie man Matrix um weniger als 90 Grad dreht
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
become:
2 3 4 8
1 7 11 12
5 6 10 16
9 13 14 15
hier ist die Methode zu drehen, was ich bisher gemacht habe. Das Ergebnis (siehe unten) ist, dass die Matrix um 90 Grad gedreht ist; Ich möchte mich so drehen können, dass Gegenstände auf dem äußeren Ring nur um einen Ort bewegt werden.
int[][] rotateArray(int[][] m) {
int e = m.length - 1;
int c = e/2;
int b = e % 2;
for (int r = c; r >= 0; r--) {
for (int d = c - r; d < c + r + b; d++) {
int t = m[c - r][d];
m[c - r][d] = m[d][e - c + r];
m[d][e - c + r] = m[e - c + r][e - d];
m[e - c + r][e - d] = m[e - d][c - r];
m[e - d][c - r] = t;
}
}
return m;
}
Stromausgang
4 8 12 16
3 7 11 15
2 6 10 14
1 5 9 13
Bitte helfen, danke :)
Mögliche Duplikat [Drehen im Uhrzeigersinn Array] (http://stackoverflow.com/questions/2799755/rotate-array-clockwise) – DimaSan
Ihre Matrix ist nicht 2x2, und ich kann nicht sehen, was offensichtlich mit der Ausgabe falsch ist. Was ist das eigentliche Problem? –
Es tut mir leid, ich denke, dass es anders ist, dass Sie um 90 Grad drehen möchten, aber ich möchte eher nach links verschieben um 1 – sptra