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;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值