二维数组旋转90度c++
时间: 2023-11-18 11:52:54 浏览: 113
二维数组旋转90度的C++代码如下:
```c++
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < n - i - 1; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - j - 1][i];
matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
matrix[j][n - i - 1] = temp;
}
}
}
```
相关问题
c++ 二维数组旋转
在 C++ 中,二维数组旋转通常是指将整个矩阵顺时针或逆时针转90度、180度或其组合。这里我们以顺时针旋转90度为例说明:
假设有一个二维数组 `matrix`,它的大小为 `n x m`,我们可以创建一个新的矩阵 `rotatedMatrix` 来存储旋转后的结果,新矩阵的大小会变为 `m x n`。
下面是顺时针旋转90度的步骤:
1. 创建一个新的空矩阵 `rotatedMatrix`,尺寸为 (m, n)。
2. 遍历原始矩阵的每个元素(从左上角开始),将其添加到新矩阵的对应位置,新位置由原位置的索引通过矩阵维度的变化计算得出。例如,原位置 `(i, j)` 的元素应放在新矩阵的`(j, n - i - 1)`位置。
```cpp
int rotatedMatrix[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
rotatedMatrix[j][m - i - 1] = matrix[i][j]; // 顺时针旋转
}
}
```
c++用一个函数将一个二维数组旋转90度
可以使用以下函数将一个二维数组旋转90度:
```c++
void rotateArray(int arr[][N], int n) {
// 先进行转置操作
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
// 再进行列交换操作
for (int i = 0; i < n; i++) {
for (int j = 0; j < n / 2; j++) {
int temp = arr[i][j];
arr[i][j] = arr[i][n - j - 1];
arr[i][n - j - 1] = temp;
}
}
}
```
其中,`arr`表示要旋转的二维数组,`n`表示数组的大小(假设为`N*N`)。首先进行转置操作,即将数组中的行和列互换,然后再进行列交换操作,即将每一列的元素按照中心轴进行交换。最终得到的数组就是旋转后的结果。