zoukankan      html  css  js  c++  java
  • 021 顺时针打印矩阵

    1.题目

      输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

    2.分析

      每次打印矩阵最外面的一圈(用方法printMatrixInCircle()表示),每次都是这个操作,所以可以采用递归。每次打印矩阵的左上角的横纵坐标相同,即为start,而其余三个角的坐标都与行列数以及start有关,因此只需要for循环即可实现打印。

      当然,其实只要针对start进行循环判断,start*2的值小于行数和列数时才需要继续打印,这样,通过这个条件,可以用循环来打印每次的最外圈矩阵。

    3.程序

     1 package first;
     2 
     3 public class PrintMatrix {
     4     public void printMatrix(int[][] matrix) {
     5         if(matrix==null || matrix.length<=0)
     6             return;
     7         printMatrixInCircle(matrix, 0);
     8     }
     9 
    10     private void printMatrixInCircle(int[][] matrix,int start) {
    11         int row=matrix.length;
    12         int col=matrix[0].length;
    13         int endX=col-1-start;
    14         int endY=row-1-start;
    15         if(endX<start || endY<start)
    16             return;
    17         //仅一行
    18         if(endY==start) {
    19             for(int i=start;i<=endX;i++) {
    20                 System.out.print(matrix[start][i]+" ");
    21             }
    22             return;  //记得结束
    23         }
    24         //仅一列
    25         if(endX==start) {
    26             for(int i=start;i<=endY;i++) {
    27                 System.out.print(matrix[i][start]+" ");
    28             }
    29             return;  //记得结束
    30         }
    31 
    32         //打印边界
    33         for(int i=start;i<=endX;i++) {
    34             System.out.print(matrix[start][i]+" ");
    35         }
    36         for(int i=start+1;i<=endY;i++) {
    37             System.out.print(matrix[i][endX]+" ");
    38         }
    39         for(int i=endX-1;i>=start;i--) {
    40             System.out.print(matrix[endY][i]+" ");
    41         }
    42         for(int i=endY-1;i>=start+1;i--) {
    43             System.out.print(matrix[i][start]+" ");
    44         }
    45 
    46         //继续打印更内部的矩阵,令start+1
    47         printMatrixInCircle(matrix, start+1);
    48     }
    49 
    50 
    51     public static void main(String[] args) {
    52         PrintMatrix demo = new PrintMatrix();
    53         int[][] a= {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    54 //      int[][] a= {};
    55 //      int[][] a= {{}};
    56 //      int[][] a= {{1}};
    57 //      int[][] a= {{1,2,3,4}};
    58 //      int[][] a= {{1},{2},{3},{4}};
    59 //      int[][] a= {{1,2,3},{4,5,6}};
    60 //      int[][] a=null;
    61         demo.printMatrix(a);
    62     }
    63 }
  • 相关阅读:
    iscroll.js
    HTML 第九章总结
    HTML第八章总结
    HTML第七章总结
    HTML第六章总结
    HTML第五章总结
    HTML第四章总结
    HTML第三章总结
    HTML第二章总结
    HTML第一章总结
  • 原文地址:https://www.cnblogs.com/juncaoit/p/10496075.html
Copyright © 2011-2022 走看看