螺旋队列公式解释

在这里插入图片描述
以1为坐标零点,向右为X正,向下为Y正,任意输入一坐标(x,y),r=max(|x|,|y|) 为当前所在层数,得到下面公式

上边:top=max−r+x;

左边:left=max−3∗r−y;

下边:bottom=max−5∗r−x;

右边:right=max−7∗r+y;

(设:紫色数字为基准点1,上/下/左/右正对数值为基准点2,如红框数值)

一、第R层数值是从多少开始的?
首先可以知道第R-1层数值是 [2x(R-1)+1]^2 = (2xR-1)^2 加一就是下一层的第一个数值。eg:第四层是从 (2x4-1)^2+1=50 开始

二、第R层有多少个数?
第R层最大数为(2xR+1)^2,最小数为(2xR-1)^2+1,两式相减在加一即得到当前层数数值个数:8R,除第一层外,每一层都是8的倍数。eg:第五层有5x8=40个

三、如何通过坐标找数值?
1、首先确定层数,找到基准点1 ,图中紫色部分,此数值为当前层数最大数值。eg:第三层的49
2、第二部找到基准点2,当前层数的上、下、左、右 正对数值(真正只需一个),通过基准点2 与 x/y 进行 加/减 ,就得到坐标点(x,y)的数值。eg:如坐标(x,y)为(-2,-3),先找到基准点2:49-1x3=46,在46基础上在加上x坐标-2得 46+(-2)=44

基准点2的获得就是通过当前层数最大值减去适当层数(层数可以类似看作半径),
每一层所有数值可以看作一个正方形,每条边的长度=层数X2+1,
从基准点1逆时针走过 1个层数为正上基准点2,走过3个层数为正左基准点2,走过5个层数为正下基准点2,走过7个层数为正右基准点2

参考资料:螺旋矩阵与螺旋队列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值