Java回形针数
通过判断边到中心的距离判断外部循环次数,内部不断进行未赋值的最外部的圈进行赋值
public static int[][] paperClip(int n) {
int[][] ns = new int[n][n];
int x = n; // 横轴长
int y = n; // 竖轴高
int q = 1; // 元素的值
int c = n/2; // 循环次数 及 若奇数时最中心坐标
for(int l = 0; l < c; l++) {
for (int i = 0; i < x; i++) { // 从左到右
if(ns[l][i] == 0)
ns[l][i] = q++;
}
x--; // 横减1
for (int i = 0; i < y; i++) { // 从上到下
if(ns[i][n-l-1] == 0)
ns[i][n-l-1] = q++;
}
y--; // 竖减1
for (int i = x - 1; i >= 0; i--) { // 从右到左
if(ns[n-l-1][i] == 0)
ns[n-l-1][i] = q++;
}
for (int i = y - 1; i >= 0; i--) { // 从下到上
if(ns[i][l] == 0)
ns[i][l] = q++;
}
}
if(n % 2 != 0) { // 若c奇数,把中心坐标赋值
ns[c][c] = q;
}
return ns;
}