C - 向外(从中心开始)和顺时针方向的2D阵列的螺旋遍历

时间:2017-05-19 09:58:54

标签: c algorithm traversal spiral

我正在努力完成我的任务并需要一些帮助。

我必须编写的程序必须遍历(更确切地说 - 填充从1到N ^ 2的自然数,但遍历算法是我所挣扎的)2D数组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等......

如何使用循环实现此算法? 时间在流逝,我被困在这里......

很乐意阅读一些建议并获得帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在此处使用相同的实现并更改第一步的方向:Print 2-D Array in clockwise expanding spiral from center

int x = 0; // current position; x
int y = 0; // current position; y
int d = 0; // current direction; 0=RIGHT, 1=DOWN, 2=LEFT, 3=UP
int c = 0; // counter
int s = 1; // chain size

int d - 是当前的方向;将其更改为3