题目:请使用C++,原地90℃旋转一个MN的矩阵,不允许增加任何内存空间(空间复杂度为O(1))
始矩阵中的每个元素c[i][j],将其放置在旋转后的矩阵new_c中的位置new_c[j][M-1-i]。
代码如下:思路以33的矩阵为例:1 2 7 先对角线转换为 1 3 5 再上下交换 7 8 9
3 4 8 2 4 6 2 4 6
5 6 9 7 8 9 1 3 5
代码如下:
#include<iostream>
using namespace std;
int main()
{
int m, n;
int c[100][100];
cout << "请输入矩阵的行数" << endl;
cin >> m;
cout << "请输入矩阵的列数" << endl;
cin >> n;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << "请输入矩阵的第" << (i + 1) << "行,第" << (j + 1) << "列的数:";
cin >> c[i][j];
}
}
cout << "输出的矩阵为:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << c[i][j] << " ";
}
cout << endl;
}
cout << "旋转后的矩阵" << endl;
for (int j = 0; j < n; j++)
{
for (int i = m - 1; i >= 0; i--)
{
cout << c[i][j] << ' ';
}
cout << endl;
}
return 0;
}