我正在努力完成我的任务并需要一些帮助。
我必须编写的程序必须遍历(更确切地说 - 填充从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等......
如何使用循环实现此算法? 时间在流逝,我被困在这里......
很乐意阅读一些建议并获得帮助。
谢谢!
答案 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
。