奇数阶幻方

说奇数阶幻方可能大家都还不是很熟悉,让我先简单地来介绍一下所谓的奇数阶幻方。如果你对我们中国古代的奇门遁甲之术有过一点点的兴趣,应该听说过《洛书》关于后天八卦的一个口诀是“戴九履一、左三右七、二四为肩、六八为足、五居其中”,其实这就是一个简单的奇数阶幻方,其特点如下图:

在这里插入图片描述
观察一下这个方阵的特点,这时你应该也注意到了,这个方阵中每一行、每一列以及每一条对角线的数字之和都相等,这就是我们中国古代人的智慧。作为现代人,我们遗传着古人的基因加上现在的条件允许,我们应该掌握更加高级的技术。所以我们就不要只停留在三阶的幻方了,我们向5阶、7阶、9阶… 的幻方发起挑战!同时,我们还要用程序将这个幻方输出出来。
这个幻方有一个规律,从最下面那一行(当然也可以是第一行)为1开始,依次向右下角衍生,如果右下角是已填充的方格则向上一个填充,如果下面出格则从上面重新入格,右边出格则从左边重新入格(其实就是把方阵的右边跟左边粘连,下边跟上边粘连,形成一个循环的方阵)

可能自然语言描述起来很难表述清楚,下面是这个幻方生成的核心代码,希望可以帮助你理解幻方的形成过程(最好是运行一下观察一下方阵的特点)
int a[][] = new int[n][n];
int i = n-1,j = n/2;
for(int k = 1;k <= n*n; k++) {
	a[i++][j++]=k;
	if(k % n ==0) {
		i -= 2;			//右下格已填充,上升一格继续填充
		j--;
	}else {
		i = i % n;   	//使下出格回到上边
		j = j % n;		//使右出格回到左边
	}
}
感觉这样的例子挺好玩的,所以记录下来,也分享给大家看看玩一下
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值