通过java实现两种不同的蛇形矩阵。
之前在一个面试题上看到了一个关于写出一个蛇形矩阵的问题,当时很是纠结,后来分析了一下之后,就觉的问题不是那么的难了。
目前我见过的蛇形矩阵的考法有两种,一种是对角线式的蛇形矩阵,另一种是回旋绕的蛇形矩阵:
**1 3 4 10**
**2 5 9** 11
**6 8** 12 15
**7** 13 14 16
对于对角线的类型来说,是比较简单的。
1.首先我们可以观察数字从小到大的变化,会发现其实角标的变化分别是。
0 0 0 1 0 2 0 3
1 0 1 1 1 2 1 3
2 0 2 1 2 2 2 3
3 0 3 1 3 2 3 3
就会发现前一个角标的变化规律是0 |1,0| 2,1,0 |3,2,1,0|
后一个角标的变化是 0 |0,1|0,1,2|0,1,2,3|
这个时候,在蛇转换方向的是时候,我们还需要调整一下递增和递减的关系!!!
于是,规律就来了。我们可以先写出一个三角形,然后在写另一个三角形,是不是就会容易的很多!!!
之前在一个面试题上看到了一个关于写出一个蛇