蛇形矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蛇形矩阵相关的知识,希望对你有一定的参考价值。

 1 /**
 2  * 蛇形矩阵
 3  * 
 4  * @author jinfeng
 5  * 
 6  */
 7 public class SnakeMatrix {
 8 
 9     /**
10      * 输入一个整数n,返回填充数据后的蛇形矩阵,其实,所有的算法都可以看成数学题来做
11      * 
12      * @param n
13      */
14     public static int[][] getSnakeMatrix(int n) {
15         int[][] matrix = new int[n][n];
16 
17         int count = 1;
18         int i, j;
19 
20         // 输出上三角
21         for (int k = 0; k < n; ++k)
22             // 当下标之和为偶数时
23             if (k % 2 == 0) {
24                 i = 0;
25                 j = k;
26                 for (; i <= k; ++i, --j)
27                     matrix[i][j] = count++;
28             // 当下标之和为奇数时
29             } else {
30                 i = k;
31                 j = 0;
32                 for (; j <= k; ++j, --i)
33                     matrix[i][j] = count++;
34             }
35 
36         // 输出下三角
37         for (int k = n, index = 1; k <= 2 * n - 2; ++k, ++index)
38             // 当下标之和为偶数时
39             if (k % 2 == 0) {
40                 i = index;
41                 j = k - index;
42                 for (; i <= k - index; ++i, --j)
43                     matrix[i][j] = count++;
44             // 当下标之和为奇数时
45             } else {
46                 j = index;
47                 i = k - index;
48                 for (; j <= k - index; ++j, --i)
49                     matrix[i][j] = count++;
50             }
51         
52         return matrix;
53     }
54 
55     public static void main(String[] args) {
56 
57         int[][] matrix = getSnakeMatrix(10);
58         for (int i = 0; i < matrix.length; ++i) {
59             for (int j = 0; j < matrix[0].length; ++j)
60                 System.out.print(matrix[i][j] + "\t");
61             System.out.println();
62         }
63     }
64 
65 }

 

以上是关于蛇形矩阵的主要内容,如果未能解决你的问题,请参考以下文章

蛇形矩阵

EOJ3536 蛇形矩阵---找规律

蛇形矩阵

蛇形矩阵

蛇形三角矩阵

蛇形矩阵与螺旋矩阵