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深度优先搜索也行!
时间: 2024-10-13 02:23:23