首页 > 代码库 > Java编码 蛇形矩阵的构建与遍历输出

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

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

例:

输入: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编码 蛇形矩阵的构建与遍历输出