c++ 二维数组旋转
时间: 2024-09-02 20:03:22 浏览: 154
在 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++二维数组旋转180
对一个二维数组进行旋转180度,可以按照以下步骤进行操作:
1. 首先,创建一个新的二维数组b[x][x],其中x是原数组的行数和列数中的较大值。
2. 然后,遍历原数组的每个元素,将其按照旋转180度的规则放入新数组中。具体规则是:新数组的第i行第j列的元素是原数组的第n-1-i行第m-1-j列的元素,其中n是原数组的行数,m是原数组的列数。
3. 最后,遍历新数组,按照相应格式输出旋转后的二维数组。
下面是一个示例代码,可以实现对二维数组进行180度旋转:
#include <iostream>
#define N 105
using namespace std;
void Rotate180(int a[N][N], int n, int m) {
int x = n > m ? n : m;
int b[N][N];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
b[i][j] = a[n-1-i][m-1-j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << b[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n, m;
int a[N][N];
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}
Rotate180(a, n, m);
return 0;
}
二维数组旋转90度c++
二维数组旋转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;
}
}
}
```
阅读全文