C - 二维数组向外(从中心开始)顺时针螺旋遍历

C - spiral traversal of 2D array outwards (starting from center) and clockwise

我正在努力完成作业,需要一些帮助。

我必须编写的程序必须遍历(更确切地说 - 填充从 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

我看到了模式:中心=1; 1xUP、1xRIGHT、2xDOWN、2xLEFT、3xUP、​​3xRIGHT 等等...

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

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

谢谢!

您可以在此处使用相同的实现并更改第一步的方向:

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.