ソートアルゴリズム - 安全プランを証明します

時計回りの印刷行列

クラス解決{
 パブリック
    ベクトル < INT > printMatrix(ベクトル<ベクトル< 整数 >> 行列){ 
        ベクトル < INT > 結果。
        INT、M = matrix.size()。
        もし(M == 0リターン結果。
        INT、N =行列[ 0 ] .size()。
        もし(N == 0リターン結果。
        INT =開始0 ;
        しながら(開始<M / 2.0&& <N-開始/ 2.0 ){ 
           printCircle(マトリックス、スタート、M、N - 、結果); 
           スタート ++ ; 
        } 
        戻り、その結果
    } 
// 最初の判定、サークルプリントに分け、 
 //は(開始および終了の変化を決定座標、追加の開始と終了の座標と同じ)を参照してください
 // 最初のものを除いて4順次、残りは条件付きであり、ポストを実行するためには、以前のすべての条件を満たしている必要があります。
プライベート無効 printCircle(ベクトル<ベクトル< int型 >>マトリックス、int型、スタートをint型メートル、int型のn、ベクトル< INT >&結果){
          int型 end_x = N - 1。 - 起動します。
         INT end_y = M - 1 - 始めます。
         // 从左到右
         ためint型 I =開始; I <= end_x; iが++ 
         result.push_back(行列[開始] [I])。
         // 从上到下
         場合(end_y> 開始){
              ためint型 I = +開始1 ; I <= end_y; iが++ 
                 result.push_back(行列[i]が[end_x])。
         } 
         // 从右到左
         場合(end_x - 1 > =開始&& end_y> 開始){
              ためINT I = end_x- 1; I> =スタート。i-- 
                 result.push_back(行列[end_y] [I])。
         } 
         // 从下到上
        場合(end_y - 1 >開始&& end_x - 1 > = 開始){
             ためint型 I = end_y - 1 ; I> = +開始1 ; i-- 
                result.push_backを(行列[I] [開始]); 
        } 
    } 
}。

 

ます。https://www.cnblogs.com/cookcoder-mr/p/11123310.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34129145/article/details/94687511