Я пишу программу в C, и мне нужна матрица M x N
для вращения по часовой стрелке. Я пробовал некоторые алгоритмы, но они работают только в матрицах N x N
.C - вращение матрицы
Матрица {(1,4), (2,5), (3,6)}
должна стать {(3,2,1), (6,5,4)}
:
1 4
2 5 -> 3 2 1
3 6 6 5 4
Я написал этот кусок кода, чтобы транспонировать матрицу, и теперь я не знаю, как поменять местами столбцы:
void transpose(int matrix[MAX][MAX], int m, int n)
{
int transpose[MAX][MAX], d, c;
for (c = 0; c < m; c++)
for(d = 0 ; d < n ; d++)
transpose[d][c] = matrix[c][d];
for (c = 0; c < n; c++)
for(d = 0; d < m; d++)
matrix[c][d] = transpose[c][d];
}
Разделяя Ваше исследование помогает всем. Расскажите, что вы пробовали и почему это не соответствовало вашим потребностям. Это демонстрирует, что вы потратили время, чтобы попытаться помочь себе, это избавляет нас от повторения очевидных ответов и, прежде всего, помогает вам получить более конкретный и релевантный ответ! Также см. [Как спросить] (http://stackoverflow.com/questions/how-to-ask) – Eregrith
, что было бы полезно, чтобы расширить NxM до NxN или MxM в зависимости от того, что больше и заполнить новые строки псевдою -значения, затем поверните и, наконец, удалите псевдо-строки –
Как обычно, с любой алгоритмической проблемой метод одинаков: 1) как вы это сделаете; 2) Как бы вы это сделали, если бы вы были автоматизированной машиной, способной просто пошаговую обработку; 3) Реализуйте этот алгоритм на выбранном вами языке. – Eregrith