C++程序 在顺时针方向将第 i 行正好旋转 i 次以修改矩阵

C++程序 在顺时针方向将第 i 行正好旋转 i 次以修改矩阵

本文将介绍如何在C++中实现矩阵的旋转操作,具体的操作是按照顺时针方向将第i行旋转i次。矩阵是一种常见的数据结构,它由多行多列的数据组成。

在实际编程中,我们经常需要对矩阵进行操作。其中一个比较常见的操作是矩阵的旋转。本文将通过代码实现,在顺时针方向将第i行旋转i次以修改矩阵。

算法思路

我们可以通过以下步骤来实现矩阵的旋转:

  1. 首先,对于第i行,正常顺序为从左到右遍历。然后,将该行中索引为i前面的元素移至该行末尾,就可以得到旋转i次后的该行。

  2. 接着,对于整个矩阵,我们只需要遍历矩阵的所有行,对每一行都进行以上操作即可完成旋转。

基本思路已经说清楚了,下面我们来看代码实现。

代码实现

下面是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次的操作。

具体实现思路如下:

  1. 遍历矩阵的每一个元素,对于第i行的每一个元素,将该行中所有索引为i前面的元素移至该行末尾。

  2. 遍历完一行后,再将该行进行翻转操作,如此反复操作,即可实现该行的顺时针旋转操作。

  3. 对于整个矩阵,只需依次处理每一行即可。

代码运行结果

下面是我们使用上述代码的运行结果:

7 4 1 
8 5 2 
9 6 3

可以看到,上述代码成功实现了我们所需要的功能,并且运行结果是正确的。

结论

通过本文,我们学习了如何在C++中实现矩阵的顺时针旋转操作。通过代码实现,我们成功地将第i行正好旋转i次以修改矩阵,从而对矩阵进行了有效的操作。在实际编程中,我们可以根据需要,灵活运用矩阵旋转等操作,以实现更多样化的功能需求。同时,在实现代码时,我们需要考虑边界情况以及优化代码效率等问题,才能避免出现潜在的问题,提高代码的可靠性和稳定性。

总之,矩阵旋转是一种常见的操作,掌握其实现方法对于开发者来说非常有用,希望本文对大家有所帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例