码迷,mamicode.com
首页 > 编程语言 > 详细

Java编码 蛇形矩阵的构建与遍历输出

时间:2016-09-02 00:40:05      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

一、蛇形矩阵的构建,并按行输出

例:

输入:n,

生成n*n的蛇形矩阵

1 2 3

8 9 4

7 6 5

输出:1 2 3 8 9 4 7 6 5

java编码

public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        if(n < 0)
            return;
        if(n == 1){
            System.out.println(1);
            return;
        }
            
        int[][] m = new int[n][n];
        //定义4个变量,分别记录当前行和列的上下限
        int i1 = 0, j1 = 0, i2 = n - 1, j2 = n - 1;
        int i = 0, j = 0;
        int begin = 1;
        //4个for循环,遍历蛇形矩阵
        while(i1 <= i2 && j1 <= j2){

            for(; j <= j2; ++j){//one row
                m[i][j] = begin;
                begin++;
            }
            j--;
            i++;
            i1++;
            
            
            for(; i <= i2; ++i){//one column
                m[i][j] = begin;
                begin++;
            }
            j2--;
            j--;
            i--;

            
            for(; j >= j1; --j){//one row
                m[i][j] = begin;
                begin++;
            }
            i2--;
            j++;
            i--;

            for(; i >= i1; --i){//one column
                m[i][j] = begin;
                begin++;
            }
            j1++;
            j++;
            i++;
        }
        
        //按行输出 蛇形矩阵
        for(i = 0; i < n; ++i)
            for(j = 0; j < n; ++j)
                System.out.println(m[i][j] + " ");
    }

二、已知蛇形矩阵m,顺时针顺序输出

例:

矩阵m

1   2   3   4

12 13 14  5

11 16 15  6

10 9   8   7

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

public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        int[][] m = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
        int n = m.length;
        int c = m[0].length;
        if(n == 1){
            for(int a = 0; a < m[0].length; ++a)
                System.out.print(m[0][a] + " ");
        }
        if(c == 1){
            for(int a = 0; a < m.length; ++a)
                System.out.print(m[a][0] + " ");
        }
            
        //定义4个指针,记录行和列的上下限
        int i1 = 0, j1 = 0, i2 = n - 1,j2 = c - 1; 
        int i = 0, j = 0;
        while(i1 <= i2 && j1 <= j2){//one row
            for(; j <= j2; ++j)
                System.out.print(m[i][j] + " ");
            i++;
            j--;
            i1++;
            for(; i <= i2; ++i)//one column
                System.out.print(m[i][j] + " ");
            i--;
            j--;
            j2--;
            for(; j >= j1; --j)//one row
                System.out.print(m[i][j] + " ");
            i--;
            j++;
            i2--;
            for(; i >= i1; --i)//one column
                System.out.print(m[i][j] + " ");
            i++;
            j++;
            j1++;
        }
        
    }

 

Java编码 蛇形矩阵的构建与遍历输出

标签:

原文地址:http://www.cnblogs.com/mydesky2012/p/5831768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!