• 1-2-顺时针打印矩阵


      1 /*
      2     题目描述:
      3     对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。
      4     给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
      5     测试样例:
      6         [[1,2],[3,4]],2,2
      7         返回:[1,2,3,4]
      8 */
      9 /*
     10     还是要注意细节,坐标在变换的时候,应该如何增减。
     11 */
     12 #include <iostream>
     13 #include <vector>
     14 using namespace std;
     15 
     16 vector<int> printEdge(vector<vector<int> > mat, int t1, int t2, int d1, int d2){
     17     vector<int> frm;
     18     if (t1 == d1){//子矩阵只有一行
     19         for (int i = t2; i <= d2; i++)
     20             frm.push_back(mat[t1][i]);
     21     }
     22     else if (t2 == d2){//子矩阵只有一列
     23         for (int i = t1; i <= d1; i++)
     24             frm.push_back(mat[i][t2]);
     25     }
     26     else{//一般情况
     27         int svt1 = t1;
     28         int svt2 = t2;
     29         while(t2 < d2){
     30             frm.push_back(mat[t1][t2]);
     31             t2++;
     32         }
     33         while (t1 <= d1){
     34             frm.push_back(mat[t1][d2]);
     35             t1++;
     36         }
     37         while (t2 > svt2+1){
     38             t2--;
     39             frm.push_back(mat[d1][t2]);
     40         }
     41         t2--;
     42         while (t1-1 > svt1){
     43             t1--;
     44             frm.push_back(mat[t1][t2]);
     45         }
     46     }
     47     return frm;
     48 }
     49 vector<int> clockwisePrint(vector<vector<int> > mat, int n, int m){
     50     int t1 = 0;
     51     int t2 = 0;
     52     int d1 = n-1;
     53     int d2 = m-1;
     54     vector<int> rt;
     55     while (t1 <= d1 && t2 <= d2){
     56         vector<int> edge = printEdge(mat, t1++, t2++, d1--, d2--);
     57         for (int i = 0; i < edge.size(); i++)
     58             rt.push_back(edge[i]);
     59     }
     60     return rt;
     61 }
     62 
     63 int main(){
     64     vector<vector<int> > matrix;
     65 /*    vector<int> a;
     66     a.push_back(1);
     67     a.push_back(2);
     68     a.push_back(3);
     69     a.push_back(4);
     70     matrix.push_back(a);
     71 
     72     vector<int> b;
     73     b.push_back(5);
     74     b.push_back(6);
     75     b.push_back(7);
     76     b.push_back(8);
     77     matrix.push_back(b);
     78 
     79     vector<int> c;
     80     c.push_back(9);
     81     c.push_back(10);
     82     c.push_back(11);
     83     c.push_back(12);
     84     matrix.push_back(c);
     85 
     86     vector<int> d;
     87     d.push_back(13);
     88     d.push_back(14);
     89     d.push_back(15);
     90     d.push_back(16);
     91     matrix.push_back(d);
     92 */
     93     vector<int> a;
     94     a.push_back(98);
     95     a.push_back(30);
     96     a.push_back(17);
     97 //    a.push_back(4);
     98     matrix.push_back(a);
     99 
    100     vector<int> b;
    101     b.push_back(38);
    102     b.push_back(96);
    103     b.push_back(90);
    104 //    b.push_back(8);
    105     matrix.push_back(b);
    106 
    107     vector<int> c;
    108     c.push_back(17);
    109     c.push_back(0);
    110     c.push_back(50);
    111 //    c.push_back(12);
    112     matrix.push_back(c);
    113 
    114     vector<int> d;
    115     d.push_back(44);
    116     d.push_back(12);
    117     d.push_back(67);
    118 //    d.push_back(16);
    119     matrix.push_back(d);
    120 
    121     vector<int> e;
    122     e.push_back(12);
    123     e.push_back(79);
    124     e.push_back(43);
    125 //    b.push_back(8);
    126     matrix.push_back(e);
    127 
    128     vector<int> f;
    129     f.push_back(43);
    130     f.push_back(63);
    131     f.push_back(40);
    132 //    c.push_back(12);
    133     matrix.push_back(f);
    134 
    135     vector<int> g;
    136     g.push_back(19);
    137     g.push_back(93);
    138     g.push_back(48);
    139 //    d.push_back(16);
    140     matrix.push_back(g);
    141 
    142     vector<int> rt;
    143     rt = clockwisePrint(matrix, 7, 3);
    144     for (int i = 0; i < rt.size(); i++)
    145         cout << rt[i] << ",";
    146     cout << endl;
    147     return 0;
    148 }
  • 相关阅读:
    数据与C
    队列的基本实现代码
    栈的基本实现代码
    c中const定义的问题
    微博登录报错 sso package orsign error
    透明度修改
    <大话设计模式>工厂模式,策略模式
    弹键盘动画
    压缩图片,直接使用大图,在小控件上会有毛边
    删除数组中的元素
  • 原文地址:https://www.cnblogs.com/qianmacao/p/4884710.html
Copyright © 2020-2023  润新知