【发布时间】:2017-05-19 09:58:53
【问题描述】:
我正在为我的任务而苦苦挣扎,需要一些帮助。
我必须编写的程序必须遍历(更准确地说 - 填充从 1 到 N^2 的自然数,但遍历算法是我的难题)二维数组 A[N][N],其中 N 是奇数 (1,3,5,7...),从中心 ( A[N/2][N/2] ) 开始,呈螺旋状和顺时针方向移动。
示例(N=5):
25 10 11 12 13
24 9 2 3 14
23 8 1 4 15
22 7 6 5 16
21 20 19 18 17
我看到了模式:center=1; 1xUP、1xRIGHT、2xDOWN、2xLEFT、3xUP、3xRIGHT,等等...
如何使用循环实现此算法? 时间在流逝,我被困在这里......
很乐意阅读一些建议并获得帮助。
谢谢!
【问题讨论】:
-
是的,我看到了,但是我应该如何编辑代码,使它从中心开始,垂直向上,然后继续螺旋和顺时针?这就是斗争。编辑:我还有一个螺旋和顺时针遍历的代码,从索引 [0][0] (矩阵的开头)开始。我目前正在研究它,所以它是从内到外的。我可以在此处粘贴该代码,如果可能的话:给我提示如何修改它。
-
您也可以为此使用方形内核(而不是圆形
cos,sin)参见Rotate a diagonal line in a 2D 3 x 3 grid - rotation matrix needed? 所以只需从矩阵的中心到外边缘循环正方形......类似于渲染同心圆
标签: c algorithm traversal spiral