Java回形针数

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;
	}

你可能感兴趣的:(java,开发语言,算法)