順時針打印矩陣

思路:一圈一圈打印。打印繼續的條件,每圈的最左上角的點(StartX,StartY)滿足*StartX x 2<rows, StartY x 2<cols *。

Paste_Image.png

只打印一步:只有一行


Paste_Image.png

只打印二步:至少兩行,一列


Paste_Image.png

只打印三步:兩行,至少兩列
Paste_Image.png

打印三步:三行,至少兩列
Paste_Image.png
printMatrix void (int rows,int cols,int [] number){
             if(number==null|| rows==0||cols)
                         return;
            for(int start=0;start*2<cols&&start*2<rows;start++){
                       printMatrixInCircle(start,rows, cols,number)
                       start++;
            }
}
printMatrixInCircle(int start,int rows,int cols,int [] number){
              endX=cols-start-1;
              endY=rows-start-1;
             //從左到右打印一行
            for(int i=start;i<=endY;i++)
                 print(numbers[start][i]);
            //從上到下打印一列
            if(start<endX){
            for(int i=start+1;i<=endX;i++)
                 print(numbers[i][endX]);
            }
            //從右到左打印一行
             if(start<endX&&start<endY){
             for(int i=endX-1;i>=start;i--)
                 print(numbers[endX][i]);
            }
          //從下到上打印一行
            if(start<endX&&start<endY-1){
            for(int i=endX-1;i>start;i--)
                 print(numbers[i][start]);
           }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容