Вот мой код для вращения квадратной матрицы по часовой стрелке на 90 градусов в Java.Вращение квадратной матрицы на 90 градусов
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// write your code here
int size = 4;
int[][] matrix = new int[size][size];
for (int i = 0; i < size ; i++) {
for (int j = 0; j < size; j++) {
matrix[i][j] = (i+(2*j));
}
}
trace(matrix, size);
rotate(matrix);
System.out.println("________________________");
trace(matrix, size);
}
public static void rotate(int[][] matrix){
int stop = matrix.length -1;
rotate(matrix, stop, 0);
}
public static void rotate(int[][] matrix, int stop, int start){
if(start - stop == 1) return;
ArrayList<Integer> temp = new ArrayList<>();
//save top row in an array
for (int i = start; i <= stop ; i++) {
temp.add(matrix[start][i]);
}
//left goes to top
for (int i = start; i <= stop ; i++) {
matrix[start][i] = matrix[stop - i][start];
}
//bottom goes to left
for (int i = start; i <= stop ; i++) {
matrix[i][start] = matrix[stop][i];
}
//right goes to bottom
for (int i = start; i <= stop ; i++) {
matrix[stop][stop - i] = matrix[i][stop];
}
//temp array goes to right
for (int i = 0; i < temp.size() ; i++) {
matrix[start + i][stop] = temp.get(i);
}
rotate(matrix, stop-1, start + 1);
}
public static void trace(int[][] matrix, int size){
for (int i = 0; i < size; i++) {
for (int j = 0; j < size ; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
Исходный массив и вывод показан ниже,
0 2 4 6
1 3 5 7
2 4 6 8
3 5 7 9
________________________
3 2 1 0
5 4 3 2
6 2 5 4
3 8 7 6
Очевидно, что ответ не совсем корректно. Хотя это почти все. Я немного потерялся из-за ошибок, любая помощь была оценена.
Похоже, некоторые люди просто живут и дышат вниз вопросы голосования на переполнение стека. – Zeus