顺时针打印二维矩阵

问题

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

1  2  3  4
5  6  7  8
9  10 11 12 
13 14 15 16 

则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

解决方案

代码

public static void solution(int[][] a){
        int r1=1;
        int r2=a.length-1;
        int c1=0;
        int c2=a[0].length-1;
        int i=0,j=0,k=a.length*a[0].length;
        while(k>1){
            //1
            for(;j<c2;j++){
                System.out.print(""+a[i][j]+',');
                k--;
            }
            c2--;
            //2
            for(;i<r2;i++){
                System.out.print(""+a[i][j]+',');
                k--;
            }
            r2--;
            //3
            for(;j>c1;j--){
                System.out.print(""+a[i][j]+',');
                k--;
            }
            c1++;
            //4
            for(;i>r1;i--){
                System.out.print(""+a[i][j]+',');
                k--;
            }
            r1++;
        }
        //解决出口问题
        System.out.print(""+a[i][j]+',');
    }
发布了15 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fuckguidao/article/details/105126698