二维数组旋转90度c++
时间: 2023-11-18 20:52:54 浏览: 81
二维数组旋转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++用一个函数将一个二维数组旋转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`)。首先进行转置操作,即将数组中的行和列互换,然后再进行列交换操作,即将每一列的元素按照中心轴进行交换。最终得到的数组就是旋转后的结果。
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;
}