博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现奇数阶幻方的构造
阅读量:5328 次
发布时间:2019-06-14

本文共 1629 字,大约阅读时间需要 5 分钟。

 

一、设计的流程图如下所示

 

二、Java 语言的代码实现

package MagicSquare;//奇数幻方的实现public class Magic_Odd {        //n 为幻方的阶数    public static int[][] magicOdd(int n) {        //构造一个(n+2)*(n+2)阶的方阵        int[][] square = new int[n + 1][n + 1];                int i = 0;        int j = (n + 1) / 2;        //从第一行的中间那个数字(是1)开始填幻方        //n阶幻方一共有n*n个数字(从1~n*n)        //奇数阶幻方的实现算法        for (int key = 1; key <= n * n; key++) {            if ((key % n) == 1)                i++;            else {  //填充当前数的右上角那个数                i--;                j++;            }                                     if (i == 0) {
//判断条件:若是在(n+2)*(n+2)阶方阵的第一行 if(j==n+1){ i=2; j=n; }else{ i=n; } } else{ if(j==n+1){ j=1; } } square[i][j] = key; } //对(n+2)*(n+2)阶的方阵进行筛选出中间的n*n阶幻方 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 = Magic_Odd.magicOdd(11); //测试11阶幻方 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(); } }}

 

三、测试结果:

 

 

(相关源码资源详见:)

转载于:https://www.cnblogs.com/shenxiaolin/p/5538364.html

你可能感兴趣的文章
对Python中yield的理解
查看>>
NailTech 公司网站制作思路
查看>>
Shiro权限控制框架
查看>>
java第六次作业
查看>>
vsftpd虚拟用户【公司系统部分享】
查看>>
盒子box在网页中居中的方法
查看>>
Python之旅Day14 JQuery部分
查看>>
二十一、 Memento 备忘录(行为型模式)
查看>>
python 3.X中打包二进制数据存储字符串出错原因分析
查看>>
core--线程池
查看>>
B+树介绍
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
深度学习文献阅读笔记(6)
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
[PHP] excel 的导入导出
查看>>
docker-containerd 启动流程分析
查看>>
SDL(01-10)
查看>>