java 回行矩阵的打印

n=3        n=4                                                  

1   2   3      1     2   3   4

8   9   4      12  13      14     5

7   6   5      11  16      15     6

                  10   9        8      7

可以看出当n是偶数的时候总共是k=n/2圈,当n是基数的时候总共是k=n/2圈+中间的一个原素A[n/2,n/2]

    public  void printJZ(int n){
        int [][]A=new int[n][n];
        int t=1;//初始值
        int i,j;
        for(int k=0;k<n/2;k++){//k代表第几圈
            for(i=k,j=k;j<n-k-1;j++){//第一条边 j的变化就是从k->n-1-k
                A[i][j]=t++;
            }
            for(i=k,j=n-k-1;i<n-k-1;i++){//第二条边i的变化就是从k->n-1-k
                A[i][j]=t++;
            }
            for(i=n-k-1,j=n-k-1;j>k;j--){//第三条边跟第一条边反过来从j从n-1-k->k
                A[i][j]=t++;
            }
            for(i=n-k-1,j=k;i>k;i--){//第四条边跟第二条边反过来从i从n-1-k->k
                A[i][j]=t++;
            }


        }
        if(n%2==1){
            A[n/2][n/2]=t;
        }

        for(i=0;i<n;i++){
            for (j=0;j<n;j++) {
                System.out.print(A[i][j]+" ");
            }
            System.out.println();
        }
    }

 


 

posted @ 2019-04-03 15:54  lianzhen  阅读(296)  评论(0编辑  收藏  举报