C++中怎么旋转二维数组
时间: 2024-12-07 14:06:46 浏览: 22
在C++中,旋转二维数组通常意味着将矩阵顺时针或逆时针移动一定角度。这里我们以顺时针90度为例讲解,因为逆时针旋转则是对角线翻转,处理起来类似。
假设你有一个二维数组`matrix`,要将其顺时针旋转90度,你可以按照以下步骤操作:
1. 首先,获取数组的行数`rows`和列数`cols`。
2. 创建一个新的二维数组`result`,它的大小将是原始矩阵的列数乘以行数,即`new_rows = cols` 和 `new_cols = rows`。
3. 对于原始矩阵的每个元素`matrix[i][j]`,在新矩阵中的位置将是`(new_rows - 1 - j)`和`(i % new_cols)`。遍历原矩阵并把元素放入新的位置。
下面是一个简单的示例代码片段:
```cpp
#include <vector>
void rotateMatrix(std::vector<std::vector<int>>& matrix) {
int n = matrix.size();
std::vector<std::vector<int>> result(n, std::vector<int>(n));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
result[j][n - 1 - i] = matrix[i][j]; // 顺时针旋转
}
}
matrix = result;
}
```
要逆时针旋转,只需交换`i % new_cols`和`new_rows - 1 - j`即可。
阅读全文