マトリックス - 顔の質問29-時計回り印刷行列オファー安全性を証明するために、

/ * 
タイトル:
	マトリックス、時計回りの旋回内側への外部からの印刷順序で各番号を入力します。
* / 
/ * 
アイデア:
	1、印刷行列印刷が外側から内側へリングとして見られています。
	2、各環は、開始ノード、行と列の数よりも2少ない開始ノードの座標*を有します。
	図面の下から、左から右に、右、上から下へ、左から3は、各リングのために、各プリント。
* / 
の#include <iostreamの> 
する#include <string.hの> 
する#include <アルゴリズム> 
の#include <cmath> 
する#include <stdio.hに> 
する#include <ベクトル> 

使用して名前空間STD; 
// RES-参照
ボイドprintMatrixs(ベクトル<ベクトル<int型>> MAT、int型の行、列はint、int型スタート、ベクトル<整数>&RES){ 
    int型の右列= -スタート; 
    int型=ダウン行は-start; 

    //左から右に1行の印字
    (int型I =について開始; I <右。 
        RES。 
    の場合(INT Iスタート+を= 1; I <ダウン; I ++){ 
        res.push_back(MAT [I] [右回転1。]); 
    } 
    //ライン印刷せずに右から左へ、右から左に印刷されています繰り返し行
    { - IF(。!1 =スタートダウン( - - ; I> =スタートI Iは右= INT 2){ため
            、res.push_back(MAT [ダウンの1。] [I])
        } 
    } 

    //をない印刷逆さまから印刷し、カラムを繰り返すために
    IF - {(START =右1。!)
        (INT I =ダウン- 2; I>スタート; I - )のために{ 
            res.push_back(MAT [I] [スタート]); 
        } 
    } 

} 

ベクトル<整数> clockwisePrint(ベクトル<ベクトル<>> MATはint、int型の列、int型の列){ 
    IF(行列== 0 == 0 ||)投(「無効パラメータ「); 
    int型スタート= 0;
    ベクトル<整数>のres; 
    一方、{(2 <行は* 2 <カラム開始&& *開始)
        printMatrixs(マット、行、列、開始、RES)を、
        ++開始; 
    } 
    RESを返します。
} 



int型のmain(){ 
   ベクトル<ベクトル<INT >>マット= {{1,2,3,4}、{5,6,7,8}、{9,10,11,12}、{13,14 、15,16}。
   ベクター<整数> RES = clockwisePrint(マット、4,4)。
   以下のために(INT iが= 0; I <res.size(); I ++){ 
    COUT << RES [I] <<」「。
   } 
}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/11930519.html