资源简介
n阶幻方的求法(java代码版)。由于现在网上还没有系统的求n阶幻方的java代码,所以写出来供大家参考!
代码片段和文件信息
package test03;
import java.util.Arrays;
import java.util.Scanner;
public class MagicSquare {
public static void main(String[] args) {
System.out.println(“请确定是几阶幻方“);
Scanner scan = new Scanner(System.in);
int a=scan.nextInt();
int[][] array=null;
if(a%2!=0){
array = getSingleArray(a1);
}else{
array=getDoubleArray(a);
}
for(int[] arr:array){
System.out.println(Arrays.toString(arr));
}
scan.close();
}
/**
* 奇数阶幻方将最小的数放在第一行最中间,然后将下一个放在这个数的右上方;如果下一个的地方有数了则放在该数的下方
* @param index:index表示幻方的阶数(奇数)
* @param num:num表示幻方中最小的数
* @return:返回满足幻方的数组
*/
public static int[][] getSingleArray(int indexint num){
//定义数组将最小的数放在数组第一行正中间
int[][] arr=new int[index][index];
arr[0][index/2]=num;
int x=0;int y=index/2;
//将最小数以后的数放入数组中
for(int i=num+1;i<=index*index+num-1;i++){
//xy为上个数的坐标把它们改为当前数的坐标
if(x-1<0){//x-1<0说明x坐标越界x变成x坐标的最大值;否则x-1就是当前数的横坐标
x=arr.length-1;
}else{
x=x-1;
}
if(y+1>arr.length-1){//y+1大于y的最大值说明y坐标越界y变为0;否则y+1就是当前数的纵坐标
y=0;
}else{
y=y+1;
}
while(true){
//判断得到的坐标是否有数
if(arr[x][y]==0){
//得到的坐标没数则直接将当前数赋给数组
arr[x][y]=i;
break;
}else{
//得到的坐标有数则获取上一个数的坐标x坐标+1作为现在的纵坐标继续循环直到xy对应的值是0赋值退出
int[] js = getIndex(arr i-1);
x=js[0]+1;
y=js[1];
if(x>arr.length-1){
x=0;
}
}
}
}
return arr;
}
/**
*
* @param arr:目标数组
* @param num:目标数(在arr数组中唯一)
* @return:返回arr数组中num这个数的坐标(存放在数组中)
*/
public static int[] getIndex(int[][] arrint num){
int[] s=new int[2];
for(int i=0;i for(int j=0;j if(arr[i][j]==num){
s[0]=i;
s[1]=j;
}
}
}
return s;
}
/**
* 偶数阶幻方
* ps:不包含2阶幻方
* @param len:幻方阶数因为不包含2
相关资源
- java rsa非对称加密算法3个源代码
- java数据结构校园导游咨询系统
- Java云计算简单
- vote投票系统java jsp mysql
- matlabcontrol-4.1.0java中调用matlab代码ja
- java实现KMeans算法代码
- DBUtil工具类,java,mysql
- 全国交通咨询系统数据结构课设 图的
- 基于javaf808协议网关模拟器
- Java+SQLServer学生成绩管理系统代码+数
- 九九乘法表
- java经典50例题
- 基于赤字轮询的mm3队列模拟java代码
- JAVA 模拟时钟实验报告
- Java拼图游戏代码
- java2cpp java转C++
- 银行账户管理系统java程序编写
- Java拼写检查
- fpgrowth算法java源码
- Java实现圆圈旋转效果,等待、加载、
- JAVA C/S架构应用程序
- Java解析CSV文件
- 一个简易版坦克大战 供java初学者学
- 教学管理系统代码java
- 毕向东Java全套.txt
- Java 套接字(Socket)实现的简单局域网
- java 多线程 打字游戏
- 必须知道的11个java第三方类库
- 基于java数据结构链表写的猴子选大王
- Java单链表增删改查的实现
评论
共有 条评论