首页 > 代码库 > 5.16魔幻方阵

5.16魔幻方阵

Q:魔幻方阵指在n*n的矩阵中填写1~n*n这些数字,使得每行每列以及两个对角线之和均相等。编写一个程序,打印出一种三阶的魔幻方阵。

 

思路一:

//用来判断i~q是否互不相等

int match(int i,int j,int k,int l,int m,int n,int o, int p,int q) {
	if(i!=j && i!=k &&i!=l&&i!=m &&i!=n &&i!=o && i!=p &&i!=q
		&& j!=k &&j!=l && j!=m &&j!=n &&j!=o &&j!=p &&j!=q
		&& k!=l &&k!=m &&k!=n && k!=o &&k!=p &&k!=q && l!=m &&
		l!=n &&l!=o &&l!=p &&l!=q &&m!=n &&m!=o &&m!=p &&m!=q
		&& n!=o &&n!=p && n!=q &&o!=p &&o!=q &&p!=q)
		return 1;
	else	return 0;
}

//用来判断i~q这种排列是否满足魔幻方阵的要求

int just(int i,int j,int k,int l,int m,int n,int o, int p,int q) {
	if(i+j+k==l+m+n &&i+j+k==o+p+q &&i+l+o==j+m+p &&i+l+o==k+n+q
	 &&i+m+q==k+m+o)
	 	return 1;
 	else return 0;
}

 

下面再弄 暴力循环。

 

思路二:DFS深度优先搜索也行!

5.16魔幻方阵