Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Развернуть матрицу используя скалярные выражения


Автор: Telsystems 9.9.2014, 21:28
Добрый день.

Есть задание:

Дана квадратная матрица размерности 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;
        }
     }
}


На сколько такое решение правильно? Спасибо!
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)