C++程序 在顺时针方向将第 i 行正好旋转 i 次以修改矩阵
本文将介绍如何在C++中实现矩阵的旋转操作,具体的操作是按照顺时针方向将第i行旋转i次。矩阵是一种常见的数据结构,它由多行多列的数据组成。
在实际编程中,我们经常需要对矩阵进行操作。其中一个比较常见的操作是矩阵的旋转。本文将通过代码实现,在顺时针方向将第i行旋转i次以修改矩阵。
算法思路
我们可以通过以下步骤来实现矩阵的旋转:
- 首先,对于第i行,正常顺序为从左到右遍历。然后,将该行中索引为i前面的元素移至该行末尾,就可以得到旋转i次后的该行。
-
接着,对于整个矩阵,我们只需要遍历矩阵的所有行,对每一行都进行以上操作即可完成旋转。
基本思路已经说清楚了,下面我们来看代码实现。
代码实现
下面是C++实现矩阵旋转操作的代码段,具体实现如下所示:
#include<iostream>
#include<vector>
using namespace std;
vector<vector<int>> rotateMatrix(vector<vector<int> > matrix) {
int len = matrix.size(); // 获取矩阵的行数
for (int i = 0; i < len; i++) {
for (int j = 0; j < i; j++) {
swap(matrix[i][j], matrix[j][i]); //矩阵转置
}
reverse(matrix[i].begin(), matrix[i].end()); // 翻转
}
return matrix;
}
int main() {
vector<vector<int>> matrix = {{1,2,3},{4,5,6},{7,8,9}};
vector<vector<int>> res = rotateMatrix(matrix);
for (int i = 0; i < res.size(); i++) {
for (int j = 0; j < res[i].size(); j++) {
cout << res[i][j] << " "; //输出修改后的矩阵
}
cout << endl;
}
return 0;
}
上述代码中,我们创建了名为rotateMatrix的函数,该函数接收一个元素类型为vector<vector
具体实现思路如下:
- 遍历矩阵的每一个元素,对于第i行的每一个元素,将该行中所有索引为i前面的元素移至该行末尾。
-
遍历完一行后,再将该行进行翻转操作,如此反复操作,即可实现该行的顺时针旋转操作。
-
对于整个矩阵,只需依次处理每一行即可。
代码运行结果
下面是我们使用上述代码的运行结果:
7 4 1
8 5 2
9 6 3
可以看到,上述代码成功实现了我们所需要的功能,并且运行结果是正确的。
结论
通过本文,我们学习了如何在C++中实现矩阵的顺时针旋转操作。通过代码实现,我们成功地将第i行正好旋转i次以修改矩阵,从而对矩阵进行了有效的操作。在实际编程中,我们可以根据需要,灵活运用矩阵旋转等操作,以实现更多样化的功能需求。同时,在实现代码时,我们需要考虑边界情况以及优化代码效率等问题,才能避免出现潜在的问题,提高代码的可靠性和稳定性。
总之,矩阵旋转是一种常见的操作,掌握其实现方法对于开发者来说非常有用,希望本文对大家有所帮助。