顺时针打印矩阵

思路:一圈一圈打印。打印继续的条件,每圈的最左上角的点(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]);
           }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容