📌  相关文章
📜  C ++程序将除对角线以外的所有矩阵元素沿顺时针方向旋转90度(1)

📅  最后修改于: 2023-12-03 14:59:37.350000             🧑  作者: Mango

C++程序将除对角线以外的所有矩阵元素沿顺时针方向旋转90度

这是一个C++程序,功能是将一个矩阵除对角线以外的所有元素沿顺时针方向旋转90度。

实现思路

本程序的主要思路是在对角线两侧分别进行操作,对角线上的元素保持不变。具体来说,我们可以先将矩阵沿着对角线翻转一次,然后再将每一行沿着中心轴旋转90度。

代码实现
#include <iostream>
#include <vector>

using namespace std;

void rotate(vector<vector<int>>& matrix) {
    int n = matrix.size();
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            swap(matrix[i][j], matrix[j][i]); // 矩阵沿对角线翻转
        }
    }
    for (int i = 0; i < n; i++) {
        int left = 0, right = n - 1;
        while (left < right) {
            swap(matrix[i][left], matrix[i][right]); // 每一行沿中心轴旋转90度
            left++;
            right--;
        }
    }
}
测试样例

我们给出一个简单的测试样例,并对运行结果进行验证。

假设矩阵为:

 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16

旋转后的矩阵应该为:

13  9  5  1
14 10  6  2
15 11  7  3
16 12  8  4

通过测试样例,可以看出本程序的功能得到正常实现。

总结

本文介绍了一个C++程序,用于将矩阵除对角线以外的所有元素沿顺时针方向旋转90度。实现思路是先将矩阵沿对角线翻转一次,然后再将每一行沿着中心轴旋转90度。程序代码简单易懂,可以作为程序员学习交流的范例。