将正方形矩阵顺时针旋转90度

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }

}

猜你喜欢

转载自blog.csdn.net/wzc2608/article/details/81180567