今天介绍一下数组的一些例子,例如利用数组实现幻方。

幻方又叫做魔方阵,幻方阵,游戏规则是在一个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));
	}
}


如果有什么不清楚或者有啥疑问意见可以加我QQ/微信  208017534  / qiang220316,欢迎一起交流一起进步。




本文转载:CSDN博客