现在的位置: 首页 > 综合 > 正文

(小白书学习笔记) 蛇形填数(矩阵)

2018年04月29日 ⁄ 综合 ⁄ 共 784字 ⁄ 字号 评论关闭

                     题目: 在n*n方阵里填入 1,2,3,... n*n,要求填写成蛇形,例如 n=4时的方阵为:

                  10  11  12  1

                   9   16  13  2

                   8   15  14  3

                   7    6     5  4     从1开始顺时针划一圈,,大家就会发现是个蛇形的样子

 LRJ 的解法是,我们从1开始,假设有一支“ 笔”,它的坐标为(x,y),那么,将这个

蛇形矩阵放在一个二维数组中,下表从0到n-1, 那么开始的时候,笔的坐标为(0,n-1)

 然后是(1,n-1),然后是(2,n-1)...一直到走到数组越界为止,数组越界的条件是什么呢?只要满足 y+1>=n的时候,我们就说数组越界了,其实道理很简单,y的取值是从

[ 0, n-1 ],当y = n-1的时候,我们就可以发现这只笔已经走到了最下面的位置,再加1的话就等于n,所以不能再向下移动这只笔了。。。

              思量类似,我们同样可以推断出,

                             往左走的终止条件是 x-1< 0

                             往上走的终止条件是 y-1< 0

                             往右走的终止条件是 y+1>=n

接下来就是从外层往内层 依次模拟就能得到我能想要得到的结果,而且,我们不难发现,当我们将n = 4时,实际上就是产生了一个n*n 数表。为1,2,3,4...到n

故,每次模拟的过程实际上就是一个边长为n的正方形逐渐 变成边长为n-1,n-2,。。。知道最后变成一个数字的过程,

稍后章节附上两种常见的蛇形矩阵,,一个是从外层向内层模拟,另一个是从内层向外层模拟


抱歉!评论已关闭.