安全offer19を証明する:順次時計回りの順に外側から内側に向かって順番に各桁を印刷、4×4行列:1,234,567,891,011,121,314 15 16 1,2-デジタル順次プリントアウト、 3,4,8,12,16,15,14,13,9,5,6,7,11,10。

1つのタイトル説明

  16プリントアウト1,234,567,891,011,121,314 15順番:次の4×4行列を入力した場合、例えば、各番号の順番を印刷する時計回りの順に外側から内側へ順に、行列を入力デジタル1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。

2つのアイデアや方法

  直接定义一个矩形,在矩形的四条边取值,程序大大简化。

3芯コード

1  クラスソリューション{
 2  公共3      ベクトル< INT > printMatrix(ベクトル<ベクトル< 整数 >> 行列){
 4          ベクトル< INT > VEC。
5          int型の行= matrix.size()。
6          INTのカラム=行列[ 0 ] .size()。
7          INTの左= 0、右=カラム、最大= 0、下= 行。
8          一方((アップ<ボトム)&&(左< 右))
 9          {
 10              int型私は=左; iは右<; iは++ )vec.push_backを(行列[最大] [I])。
11              のためには、int型私は+ = 1 ; iは底を<; iは++)vec.push_back(行列[I] [右1 ])。
12              のためにint型 I =右1 - 1 ;((ボトム1(I> =左))=最大)&&; i--!)vec.push_back(行列[ボトム1 ] [I])。
13              のためには、int型 I =ボトム1 - 1 ;((右1!)=左)&&(I>左); i-- )vec.push_back(行列[I] [左])。
14             アップ++; ++左; 右 - ; bottom-- ;
15          }
 16          リターンVEC。
17      }
 18 }。
コードの表示

4完全なコード

1つの#include <iostreamの>
 2の#include <ベクトル>
 。3  
。4  使用して 名前空間STD;
 5  
。6  // 直接大幅にプログラムを簡素化、矩形の4辺の値を矩形を定義する
。7  クラスソリューション{
 8  公共9。      ベクトル< 整数 > printMatrix(ベクトル<ベクトル< INT >>   行列){
 10          ベクトル< INT > VEC;
 11          int型の行= matrix.size();
 12は、         INTカラム=行列[ 0 ] .size();
 13である         INT =左0、右=カラム、最大= 0、下= 行。
14          一方((アップ<ボトム)&&(<左)右)
 15          {
 16              のためのint型 iは左=;私は右<; Iは++ )vec.push_back(行列[最大] [I])。
17              のためにint型 iは+アップ= 1 ; iが底を<; I ++)はvec.push_back(行列[I] [右- 1 ])。
18              のためにint型 I =右- 1 - 1 ;((ボトム- 1)=最大)&&(I> =左);!i--)vec.push_back(行列[ボトム- 1 ] [I])。
19             int型 I =ボトム- 1 - 1 ;((右- 1)=左)&&(I>左);!i-- )vec.push_back(行列[I] [左])。
20              アップ++; ++左; 右 - ; bottom-- ;
21          }
 22          リターンVEC。
23      }
 24  }。
25  
26  のint main()の
 27  
28  {
 29      ソリューション。
30      ベクトル<ベクトル< INT >>行列= {{ 12345 }、{ 678910 }、{ 1112131415 }}; // 行列の初期化
31である      ベクトル< INT > M = a.printMatrix(マトリックス);
 32      のための(自動I:M)// 順次戻り値行列印刷
33が          COUT I << << "  " ;
 34は      COUT << ENDL;
 35  
36      リターン 0 ;
 37 [  
38です }
コードの表示

参考資料

https://blog.csdn.net/hangsyt108/article/details/80949337

おすすめ

転載: www.cnblogs.com/wxwhnu/p/11410207.html