Я не могу повернуть матрицу M * N против часовой стрелки. Мой код работает правильно для матрицы 3 * 3, но когда я пытаюсь в любом другом случае, он не работает, предположим, что я делаю это для матрицы 4 * 4, тогда вращаются только внешние элементы, а внутренние 4 элемента, то есть 6,7,10,11 не вращаются. Мой ввод 1-16 чисел в виде матрицы 4 * 4 {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}
static void antirotatematrix(int m,
int n, int mat[][])
{
int row = 0, col = n-1;
int prev, curr;
while (row < m && col < n )
{
if (row+1 == m || col-1 == 0) {
break; }
prev = mat[row + 1][col];
for (int i = col; i>= 0; i--)
{
curr = mat[row][i];
mat[row][i] = prev;
prev = curr;
}
row++;
for (int i = row; i < m; i++)
{
curr = mat[i][0];
mat[i][0] = prev;
prev = curr;
}
n--;
if (row < m) {
for (int i = n-2; i <= col; i++)
{
curr = mat[m-1][i];
mat[m-1][i] = prev;
prev = curr;
}
}
m--;
if (col <= n)
{
for (int i = m-1; i >= row; i--)
{
curr = mat[i][col];
mat[i][col] = prev;
prev = curr;
}
}
col++;
}
for (int i = 0; i <= 3; i++)
{
for (int j = 0; j <= 3; j++)
System.out.print( mat[i][j] + " ");
System.out.print("\n");
}
}