版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzc2608/article/details/81180567
#include <iostream>
#include <vector>
using namespace std;
void rotateEdge(vector<vector<int> > &m, int tr, int tc, int dr, int dc)
{
int times = dc - tc;
int tmp = 0;
for(int i = 0; i != times; ++i)
{
tmp = m[tr][tc + i];
m[tr][tc + i] = m[dr - i][tc];
m[dr - i][tc] = m[dr][dc - i];
m[dr][dc - i] = m[tr + i][dc];
m[tr + i][dc] = tmp;
}
}
void rotaten(vector<vector<int> > &m)
{
int tr = 0;
int tc = 0;
int dc = m[0].size() - 1;
int dr = m.size() - 1;
while(tr < dr)
rotateEdge(m, tr++, tc++, dr--, dc--);
}
int main()
{
int a[] = {1, 2, 3, 4};
vector<int> ivec(a, a + 4);
vector<vector<int> > m;
m.push_back(ivec);
ivec[0] = 5;
ivec[1] = 6;
ivec[2] = 7;
ivec[3] = 8;
m.push_back(ivec);
ivec[0] = 9;
ivec[1] = 10;
ivec[2] = 11;
ivec[3] = 12;
m.push_back(ivec);
ivec[0] = 13;
ivec[1] = 14;
ivec[2] = 15;
ivec[3] = 16;
m.push_back(ivec);
rotaten(m);
for(int i = 0; i < m.size(); ++i)
{
for(int j = 0; j < m[0].size(); ++j)
cout << m[i][j] << " ";
cout << endl;
}
}