求螺旋方阵的算法

boyate 2004-01-12 11:04:56
求正反螺旋方阵算法!

n = 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


反螺旋:
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17

...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mxk19791116 2004-01-12
  • 打赏
  • 举报
回复
真地高呀


帮UP
cll007 2004-01-12
  • 打赏
  • 举报
回复
来源于
http://expert.csdn.net/Expert/topic/2465/2465813.xml?temp=.2756616
cll007 2004-01-12
  • 打赏
  • 举报
回复
正螺旋 可以通过 反螺旋 计算
你把两个方阵对应的地方加起来就知道了
cll007 2004-01-12
  • 打赏
  • 举报
回复
反螺旋:如下
看看对角线上的21,7,1,3,13,排列出来:1,3,7,13,21
规律:a[i]=i*(i-1)+1,当符合公式N=a[i],且i是整数时,此时必须转折;
例子:如果现在N=1,由公式N=a[i]计算i=1,表示1为转折点;
我们称此时对角线上的点为主转折点
-------
在看对角线25,9,1,5,17,排列后1,5,9,17,26
规律:b[i]=i*i+1,当符合公式N=b[i],且i是整数时,此时必须转折;
例子:如果现在N=5,由公式N=b[i]计算i=2,表示1为转折点;
我们称此时对角线上的点为副转折点
------
区分主、副转折点的意义:
在主转折点后的长度,比之前的长一个单位,此次转折是增加长度
例子:主转折点 13 前面(包括自己)有10,11,12,13四个数字,后面有13,14,15,16,17五个数字
在副转折点后的长度,比之前的相同,此次只为转折
例子:副转折点 10 前面(包括自己)有7,8,9,10四个数字,后面有10,11,12,13,四个数字
-------
符合公式N=a[i],N=b[i],且i为整数的,才是转折点;i标明了是第i个转折点(分主副)
-----------------------------

cll007 2004-01-12
  • 打赏
  • 举报
回复
谢谢喽
你happy我也happy
哈哈
boyate 2004-01-12
  • 打赏
  • 举报
回复
哦,我自己弄错了,偶数也行!
马上接帖,cll007(gazo)接分100!!!
boyate 2004-01-12
  • 打赏
  • 举报
回复
谢谢cll007(gazo)!

还有个问题:
你给的算法是当n是奇数,若n是偶数又如何呢?

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧