题目:请使用C++,原地90℃旋转一个MN的矩阵,不允许增加任何内存空间(空间复杂度为O(1))

发布时间 2023-07-12 14:20:36作者: 鲸鱼游游

题目:请使用C++,原地90℃旋转一个MN的矩阵,不允许增加任何内存空间(空间复杂度为O(1))
始矩阵中的每个元素c[i][j],将其放置在旋转后的矩阵new_c中的位置new_c[j][M-1-i]。
代码如下:思路以3
3的矩阵为例: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;
}