你必须使用原地算法来旋转图像,而不能重新创建一个数组,本关不需要你输出数组,只需要修改数组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;
}