内螺旋矩阵
October 31st, 2011
No comments
暂且就叫内螺旋矩阵吧。
int i=5; 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 int i=6 1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10 16 15 14 13 12 11
最近常在网上看到一些打印矩阵的题,后来发现其实都是有相同的规律可循的:
1. 将问题转化为初始化矩阵的问题,然后模拟行走的方向,一般来说,方向都是循环的,而每次行走的步数也是按一定的规律递减,比如当i = 5 时:
向右 5 步 向下 4 步 向左 4 步 向上 3 步 向右 3 步 向下 2 步 向左 2 步 向上 1 步 向右 1 步
很明显吧?544332211,右下左上,右下左上…
2. 在编程时,我们可以用一个整数 direction 来记录方向,每到当前方向的最后一步,就转变方向。由于方向都是按一定的次序循环的,所以,在转换方向时,可以用:
direction = (direction+1)%4。
代码如下:
评论