1、魔方阵算法及 C语言实现1 魔方阵概念魔方阵是指由 1,2 ,3n 2填充的,每一行、每一列、对角线之和均相等的方阵,阶数n = 3,4,5 。魔方阵也称为 幻方阵。例如三阶魔方阵为:魔方阵有什么的规律呢?魔方阵分为奇幻方和偶幻方。而偶幻方又分为是 4 的倍数(如 4,8,12 )和不是 4的倍数(如 6,10,14)两种。下面分别进行介绍。2 奇魔方的算法2.1 奇魔方的规律与算法奇魔方(阶数 n = 2 * m + 1,m =1,2,3 )规律如下:1. 数字 1 位于方阵中的第一行中间一列;2. 数字 a(1 2 / Author: http:/ 3 / N 为魔方阶数 4 #defin
2、e N 11 5 6 int main() 7 8 int aNN; 9 int i;10 int col,row;11 12 col = (N-1)/2;13 row = 0;14 15 arowcol = 1;16 17 for(i = 2; i 2 / Author: http:/ 3 / N 为魔方阶数, 4 #define N 12 5 6 int main() 7 8 int aNN;/存储魔方 9 int i, temp;/临时变量 10 int col, row;/col 列,row 行11 12 /初始化 13 i = 1;14 for(row = 0;row 2 / Aut
3、hor: http:/ 3 / N 为魔方阶数 4 #define N 12 5 6 int main() 7 8 int aNN;/存储魔方 9 int temparrayN*N/2;/存储取出的元素 10 int i;/循环变量 11 int col, row;/ col 列,row 行 12 13 /初始化 14 i = 1;15 for(row = 0;row / Author: http:/ N 为魔方阶数#define N 10int main()int aNN = 0 ;/存储魔方int i,k,temp;int col,row;/ col 列,row 行/初始化k = N /
4、2;col = (k-1)/2;row = 0;arowcol = 1;/生成奇魔方 Afor(i = 2; i #define N 16 /这里可以修改 N 的值,并且 N 只能为奇数int main()int aNN=0,i,j,k,p,m,n;p=1;while(p=1)printf(“Enter n(1%d): “,N-1);/*可以输入小于等于 N-1 的奇数*/scanf(“%d“,if(n!=0)j=j-1;elseif(in) j=1;if(aij=0) aij=k;elsei=i+2;j=j-1;aij=k;for(i=1;ivoid main()int a1515=0,i,
5、j,m,n,temp,M;printf(“请输入一个 315 的奇数:n“);scanf(“%d“,i=0;j=M/2;aij=1;for(temp=2;tempM-1)j=0;if(aij!=0)i=m+1,j=n;aij=temp;continue;aij=temp;printf(“%d%d 魔方阵:n“,M,M);for(i=0;iM;i+)for(j=0;jM;j+)printf(“%4d“,aij);printf(“n“);/(求 4 的倍数阶幻方)void main()int i,j,x,y,n,t,k=1;int a100100;printf(“请输入魔方阵的阶数 n n“);scanf(“%d“,printf(“输出为:n“);if(n%4=0)for(i=0;in;i+)for(j=0;jn;j+)aij=k;k+;x=n-1;for(j=0;jn/2;j+,x-)for(i=0;in;i+)if(i%4!=j%4aij=aix;aix=t;x=n-1;for(i=0;in/2;i+,x-)for(j=0;jn;j+)if(i%4!=j%4aij=axj;axj=t;for(i=0;in;i+)for(j=0;jn;j+)printf(“%-4d“,aij);printf(“n“);else printf(“输入错误n“);system(“pause.“);