今天介绍一下数组的一些例子,例如利用数组实现幻方。
幻方又叫做魔方阵,幻方阵,游戏规则是在一个n*n的矩阵中填入1到n*n的数字,使得买一行,每一列,每条对角线的累加相等。
java算法的实现:
package array;
public class ArrayHF {
//幻方的实现
public int[][] sQueue(int n){
int[][] a=new int[n][n];
int i=0,j=n/2;//起始点为第一行的中间位置
a[i][j]=1;//设置中间位置初始值为1
for(int k=2;k<=n*n;k++){//将幻方中的1,n*n数字填入二维数组中去
int iTemp=i,jTemp=j;//暂时用来存放i,j的值
i=(i-1+n)%n;//i往上移动一格
j=(j-1+n)%n;//j往左移动一格
if(a[i][j]>0){//第i行第j列已填
i=(iTemp+1)%n;//行数加一填入数字
j=jTemp;//本列不变
}
a[i][j]=k;
}
return a;
}
public void disPlay(int[][] a){//打印数组中的所有元素
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
ArrayHF a=new ArrayHF();
int[][] anum=new int[2][2];
a.disPlay(a.sQueue(5));
}
}