c++如何将矩阵中最外围的每个格子都顺时针移动一格
时间: 2024-02-03 08:02:37 浏览: 20
你可以使用循环来实现这个功能。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void shiftMatrixClockwise(vector<vector<int>>& matrix) {
int rows = matrix.size();
int columns = matrix[0].size();
// 保存最外围一圈的元素
vector<int> temp;
for (int i = 0; i < columns; i++) {
temp.push_back(matrix[0][i]); // 上边
}
for (int i = 1; i < rows; i++) {
temp.push_back(matrix[i][columns - 1]); // 右边
}
for (int i = columns - 2; i >= 0; i--) {
temp.push_back(matrix[rows - 1][i]); // 下边
}
for (int i = rows - 2; i > 0; i--) {
temp.push_back(matrix[i][0]); // 左边
}
// 向右移动一格
int size = temp.size();
int index = size - 1;
for (int i = columns - 1; i > 0; i--) {
matrix[0][i] = temp[index--]; // 上边
}
for (int i = rows - 1; i > 0; i--) {
matrix[i][columns - 1] = temp[index--]; // 右边
}
for (int i = 0; i < columns - 1; i++) {
matrix[rows - 1][i] = temp[index--]; // 下边
}
for (int i = 0; i < rows - 1; i++) {
matrix[i][0] = temp[index--]; // 左边
}
}
int main() {
// 示例用 4x4 的矩阵
vector<vector<int>> matrix = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
shiftMatrixClockwise(matrix);
// 输出移动后的矩阵
for (const auto& row : matrix) {
for (const auto& element : row) {
cout << element << " ";
}
cout << endl;
}
return 0;
}
```
这段代码使用了一个辅助数组来保存最外围的元素,然后将矩阵中的元素向右移动一格。最后输出移动后的矩阵。
注意:这只是一个示例代码,如果需要处理更一般的情况(如不限定矩阵大小),可能需要进行一些额外的处理。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)