美文网首页
顺时针打印矩阵(java递归实现)

顺时针打印矩阵(java递归实现)

作者: 黄鹤的小姨子 | 来源:发表于2018-08-24 12:13 被阅读0次

思路

从最外层开始用4个for循环,分别从左到右,从上到下,从右到左,最后从下到上打印。接着 x,y坐标都 +1开始递归调用,打印第二层,以此类推
下面测试4个不同行列的矩阵 5x5,4x4, 5x4, 4x5

public static void main(String[] args) {
            int matrix0[][] = 
                {
                 { 1,   2,  3,  4,  5   },
                 { 6,   7,  8,  9,  10  },
                 { 11,  12, 13, 14, 15  },
                 { 16,  17, 18, 19, 20  },
                 { 21,  22, 23, 24, 25  }
                };
            int matrix1[][] = 
                {
                 { 1,   2,   3,   4  },
                 { 5,   6,   7,   8  },
                 { 9,   10,  11,  12 },
                 { 13,  14,  15,  16 }
                };
            int matrix2[][] = 
                {
                 { 1,   2,   3,   4  },
                 { 5,   6,   7,   8  },
                 { 9,   10,  11,  12 },
                 { 13,  14,  15,  16 },
                 { 17,  18,  19,  20 }
                };
            int matrix3[][] = 
                {
                 { 1,   2,  3,  4,  5   },
                 { 6,   7,  8,  9,  10  },
                 { 11,  12, 13, 14, 15  },
                 { 16,  17, 18, 19, 20  }
                };
            print(0, 0, matrix0);
            print(0, 0, matrix1);
            print(0, 0, matrix2);
            print(0, 0, matrix3);
     }
public static void print(int x, int y, int matrix[][]) {

        int v = matrix.length;

        int p = matrix[0].length;

        if (x >= v / 2 && y >= p / 2) {
            
            if (v % 2 != 0 && p % 2 != 0) {
                System.out.print(matrix[x][y]);
            }
            System.out.println();// 换行
            return;
        }

        for (int i = x; i < p - x; i++) {
            System.out.print(matrix[y][i] + ",");
        }

        int q = p - x - 1;
        for (int j = y + 1; j < v - y; j++) {
            System.out.print(matrix[j][q] + ",");
        }

        int w = v - y - 1;
        for (int k = q - 1; k >= x; k--) {
            System.out.print(matrix[w][k] + ",");
        }

        for (int l = w - 1; l > y; l--) {
            System.out.print(matrix[l][x] + ",");
        }
        print(++x, ++y, matrix);
    }

打印结果为:

1,2,3,4,5,10,15,20,25,24,23,22,21,16,11,6,7,8,9,14,19,18,17,12,13
1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10,
1,2,3,4,8,12,16,20,19,18,17,13,9,5,6,7,11,15,14,10,
1,2,3,4,5,10,15,20,19,18,17,16,11,6,7,8,9,14,13,12

相关文章

  • 顺时针打印矩阵(java递归实现)

    思路 从最外层开始用4个for循环,分别从左到右,从上到下,从右到左,最后从下到上打印。接着 x,y坐标都 +1开...

  • 剑指offer第二版-29.顺时针打印矩阵

    本系列导航:剑指offer(第二版)java实现导航帖 面试题29:顺时针打印矩阵 题目要求:输入一个矩阵,按照从...

  • 顺时针打印矩阵(java)

    顺(逆)时针打印矩阵 算法思想: 简单来说,就是不断地收缩矩阵的边界 定义四个变量代表范围,up(初始0)、dow...

  • 【不熟练】知识迁移能力-顺时针打印矩阵

    顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: ...

  • 《剑指offer》— JavaScript(19)顺时针打印矩阵

    顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: ...

  • 剑指offer——顺时针打印矩阵

    剑指offer——顺时针打印矩阵 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,...

  • 矩阵

    题一:顺时针转圈打印矩阵 题二:“之“字形打印矩阵"之"字形打印矩阵两个指针:(sr,sc)先从第一行往右移动,到...

  • 《剑指offer》(十九)-顺时针打印矩阵(java)

    顺时针打印矩阵 考点:数组 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入...

  • 顺时针打印矩阵

    题目:顺时针打印矩阵(算法课第四课) 对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩...

  • 顺时针打印矩阵

    题目来源:牛客网--顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,...

网友评论

      本文标题:顺时针打印矩阵(java递归实现)

      本文链接:https://www.haomeiwen.com/subject/sbebiftx.html