明确了方阵数字是螺旋递增以后,发现每一个“口”字型的一圈数字正好闭合且连续递增。所以解题思路是由“口”字型的
递增依次向内嵌套。先填充最外层“口”字型的一圈数字,接着填充次外层……最后填充最内层的四个数。由一些较简单的画图可以
看出,层数的奇偶会影响到最内层的填充。当为奇数时,最内层只剩一个数字需要填充。所以奇数层需要单独考虑。
先是填充顶部的(n-1)个数字,接着由顶部的最后一个数字开始向下,填充右部的(n-1)个数字,接着是底部的(n-1)个和左部的(n-1)个,这样就填充了最外层的一圈“口”字型数字。(定一个静态的成员变量,从1开始,每填充一次,自增一次),依照同样的方法填充次外层,第三层……一直到偶数层的最内层。
*
填充的算法是:每一层未填充的个数是(n-2*l)个,n是总层数,l是当前层数,为了便于数组的计算,这里层数也是从0开始,
* 即l=0时是第一层。每一轮填充都是从(l,l)开始的。←---字母l,不是数字1。 但是每一层都需要为邻边的填充留一个地方,比如填充顶部的时候,需要留出一个位置作为填充右部的开始,所以真正需要填充的个数是(n-2*l-1)。
* 当层数为l时,每一边的起始坐标分别是(上,右,下,左):
* (l,l)
* (l,n-l-1)
* (n-1,n-1)
* (n-1,l)
*
* 当层数为偶数层的时候,恰好最后一层每一边填充一个数。当层数为奇数层的时候,最后一层只剩一个数未填充(n-2*l-1)=