前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >N(奇数)阶幻方-java实现代码

N(奇数)阶幻方-java实现代码

作者头像
lzugis
发布2018-10-23 15:09:18
7390
发布2018-10-23 15:09:18
举报

看完最强大脑,有一期是说N阶幻立方的,作为一个程序员,我的第一反应时我可以用程序实现,在此公布N(奇数)阶幻方的java实现代码:

代码语言:javascript
复制
package com.lzugis.test;

public class Practice {
	public static int[][] magicOdd(int n) {
		int[][] square = new int[n + 1][n + 1];
		int i = 0;
		int j = (n + 1) / 2;
		for (int key = 1; key <= n * n; key++) {
			if ((key % n) == 1)
				i++;
			else {
				i--;
				j++;
			}
			if (i == 0)
				i = n;
			if (j > n)
				j = 1;
			square[i][j] = key;
		}
		int[][] matrix = new int[n][n];
		for (int k = 0; k < matrix.length; k++) {
			for (int l = 0; l < matrix[0].length; l++) {
				matrix[k][l] = square[k + 1][l + 1];
			}
		}
		return matrix;
	}

	public static void main(String[] args) {
		int[][] magic = Practice.magicOdd(3);
		for (int k = 0; k < magic.length; k++) {
			for (int l = 0; l < magic[0].length; l++) {
				System.out.print(magic[k][l] + " ");
			}
			System.out.println();
		}
	}
}

效果如下:

3阶幻方

5阶幻方

备注:

幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。幻方中间格的值为(N*N+1)/2,即3阶幻方中间为(3*3+1)/2=5,3阶幻方中间为(5*5+1)/2=13,……

如有疑问请联系:

QQ:1004740957

Email:niujp08@qq.com

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年01月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档