📅  最后修改于: 2023-12-03 14:59:37.350000             🧑  作者: Mango
这是一个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度。程序代码简单易懂,可以作为程序员学习交流的范例。