写一个代码:程序功能:将一个4×4二维数组中全部元素顺时针旋转90°。
时间: 2024-03-06 07:48:46 浏览: 72
这是一个 Python 的实现:
```python
def rotate(matrix):
n = len(matrix)
# 先对矩阵进行转置
for i in range(n):
for j in range(i, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# 再对每一行进行翻转
for i in range(n):
matrix[i] = matrix[i][::-1]
# 测试代码
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]
rotate(matrix)
for row in matrix:
print(row)
```
输出结果为:
```
[13, 9, 5, 1]
[14, 10, 6, 2]
[15, 11, 7, 3]
[16, 12, 8, 4]
```
相关问题
C++中如何顺时针90°或逆时针90°旋转一个二维数组?请给出参考代码
在C++中,顺时针或逆时针旋转一个二维数组可以通过多种方法实现,下面分别提供两种方法的示例代码:
1. 顺时针旋转90度的方法之一是先转置矩阵(行列互换),然后反转每一行。逆时针旋转90度则是先反转每一行,然后转置矩阵。
顺时针旋转90度的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void rotate90DegreesClockwise(vector<vector<int>>& matrix) {
int n = matrix.size();
// 转置矩阵
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
// 反转每一行
for (int i = 0; i < n; ++i) {
reverse(matrix[i].begin(), matrix[i].end());
}
}
int main() {
vector<vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
rotate90DegreesClockwise(matrix);
for (const auto& row : matrix) {
for (int val : row) {
cout << val << " ";
}
cout << endl;
}
return 0;
}
```
逆时针旋转90度的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void rotate90DegreesCounterClockwise(vector<vector<int>>& matrix) {
int n = matrix.size();
// 反转每一行
for (int i = 0; i < n; ++i) {
reverse(matrix[i].begin(), matrix[i].end());
}
// 转置矩阵
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
}
int main() {
vector<vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
rotate90DegreesCounterClockwise(matrix);
for (const auto& row : matrix) {
for (int val : row) {
cout << val << " ";
}
cout << endl;
}
return 0;
}
```
注意:这里的二维数组用的是`vector<vector<int>>`类型,它是一个动态数组,可以容纳不同长度的子数组。如果使用的是静态数组,需要根据具体大小进行适当的调整。
C++中如何顺时针90°或逆时针90°旋转一个二维数组?请只使用一个for循环给出参考代码
在C++中,顺时针90度旋转二维数组,可以先将二维数组进行转置,然后水平翻转每一行;逆时针90度旋转二维数组,可以先将二维数组进行转置,然后垂直翻转每一列。这里我提供一个顺时针旋转90度的参考代码:
```cpp
#include <iostream>
#include <vector>
void rotateBy90DegreesClockwise(std::vector<std::vector<int>>& matrix) {
int n = matrix.size();
// 首先对矩阵进行转置
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
std::swap(matrix[i][j], matrix[j][i]);
}
}
// 然后翻转每一行
for (int i = 0; i < n; ++i) {
for (int j = 0, k = n - 1; j < k; ++j, --k) {
std::swap(matrix[i][j], matrix[i][k]);
}
}
}
int main() {
std::vector<std::vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
rotateBy90DegreesClockwise(matrix);
// 输出旋转后的矩阵
for (const auto& row : matrix) {
for (int val : row) {
std::cout << val << " ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码首先将矩阵转置,然后对每一行进行翻转。注意,我们使用了两个嵌套的for循环来实现这个操作,并且只使用了一个额外的for循环来翻转每一行。
阅读全文