顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

 

思路:打印第一行,然后删除第一行,逆时针旋转。循环终止到数组中没有元素。

顺时针打印矩阵

class Solution {
    void ccwVector(vector<vector<int> >&a){

        vector<vector<int>>b = a;
        if (a.size() <= 0)
            return;

        //初始化矩阵的空间
        a.clear();

        a.resize(b[0].size());

        for (int i = 0; i < a.size(); i++){
            a[i].resize(b.size());
        }
        //制作逆时针转向的新矩阵
        for (int i = 0; i < b[0].size(); i++){
            for (int j = 0; j < b.size(); j++){
                a[b[0].size() - i - 1][j] = b[j][i];
            }

        }
    }


public:
    vector<int> printMatrix(vector<vector<int> > matrix) {

        vector<int>result;
        vector<vector<int>>::iterator i;
        while (matrix.size()>0){
            i = matrix.begin();
            for (auto j = (*i).begin(); j!=(*i).end(); j++){
                result.push_back(*j);
            }
            matrix.erase(matrix.begin());
            ccwVector(matrix);
        }
        return result;
    }
};

int main(){

    Solution s;
    vector<vector<int>>a(4, vector < int>(4));
        int v = 1;
        //初始化一个矩阵。
        for (int i = 0; i < a.size(); i++){
            for (int j = 0; j < a[0].size(); j++){
                a[i][j] = v++;
                cout << a[i][j] <<"  ";
            }
            cout << endl;
        }
        cout << "-----------" << endl;
        vector<int>b = s.printMatrix(a);
        for (int i = 0; i < b.size(); i++){
                cout<<b[i]<<"   " ;
        }
        cout << endl;
}

View Code

 顺时针打印矩阵

//这里先a[i][j] = b[j][i];   发现a中的数组是反的,所以有了下面的代码。

a[b[0].size() - i - 1][j] = b[j][i];

 细心一点就可以了,这里是有规律的,所有一定能找到循环赋值的方法。

原文链接: https://www.cnblogs.com/yuguangyuan/p/5915442.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    顺时针打印矩阵

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/398092

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月11日 上午9:53
下一篇 2023年4月11日 上午9:54

相关推荐