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

                     题目: 在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,。。。知道最后变成一个数字的过程,

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值