你必须使用原地算法来旋转图像,而不能重新创建一个数组,本关不需要你输出数组,只需要修改数组m即可。
这种vector的使用方法还是第一次见,学到了。
#include <iostream>
#include <string>
#include <cstdlib>
#include <vector>
#include <algorithm>
#define pause system("pause")
using namespace std;
vector< vector<int> > m;
void get_matrix(int row, int col)
{
m.clear();
vector<int> buf;
for (int i = 0; i < row; i++) {
buf.clear();
for (int j = 0; j < col; j++) {
int val;
cin >> val;
buf.push_back(val);
}
m.push_back(buf);
}
}
void change_matrix(int row, int col)
{
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
m[i].push_back((m[j])[0]);
m[j].erase((m[j]).begin());
}
}
for (int i = 0; i < col; i++) reverse(m[i].begin(), m[i].end());
}
void print(int row, int col)
{
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (j) cout << " ";
cout << (m[i])[j];
}
cout << endl;
}
}
int main()
{
int row, col;
while (cin >> row >> col && row && col)
{
get_matrix(row, col);
change_matrix(row, col);
print(row, col);
}
return 0;
}
本文介绍了一种在不重新创建数组的情况下,原地旋转二维矩阵的算法实现。通过使用C++,我们展示了如何读取矩阵,进行旋转操作,并打印旋转后的结果。此算法适用于需要节省内存资源的场景。
926

被折叠的 条评论
为什么被折叠?



