Развернуть матрицу, используя скалярные выражения
Добрый день.
Есть задание:
Дана квадратная матрица размерности N, например:
| 5 |12|88|
|65|54|43|
|81|92|56|
Нужно ее развернуть на 90 градусов, чтобы вышло:
|81|65| 5 |
|92|54|12|
|56|43|88|
Вопрос: как это сделать, не копируя матрицу в память и без использования любых динамических структур? Можно использовать счетное количество скалярных переменных, не зависящее от размерности матрицы.
UPD:
Делаю так:
public static void Rotate()
{
int tmp;
for (int i = 0; i < n/2; i++)
{
for (int j = i; j < n - 1 - i; j++)
{
tmp = matrix[i,j];
matrix[i,j] = matrix[n - j - 1,i];
matrix[n - j - 1,i] = matrix[n - i - 1,n - j - 1];
matrix[n - i - 1,n - j - 1] = matrix[j,n - i - 1];
matrix[j, n - i - 1] = tmp;
}
}
}
Спасибо!
Источник: Stack Overflow на русском