请问怎么输出魔方阵!谢谢
顶上去先
#include <math.h>
#include <stdio.h>
main()
{int i,j,m,n,k,a[10][10];
scanf("%d",&n);
m=n-1;
k=n/2;
for(i=1;i<=n*n;i++)
{
a[m][k]=i;
k++;
m++;
if(k>=n) k=0;
if(m>=n) m=0;
if((i+n)%n==0)
{k=k-1;
m=m-2;
if(k<0)k=k+n;
if(m<0)m=m+n;
}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
getch();
}
[此贴子已经被作者于2007-4-4 13:32:42编辑过]
/* 标准文档模板 */
#include "Stdio.h"
#include<stdio.h>
void main()
{int a[15][15],i,j,n=0,k;
while(n%2==0||n<=0||n>15)
{scanf("%d",&n);
printf("\n");}
for(i=0;i<15;i++)
{for(j=0;j<15;j++)
a[i][j]=0;}
for(i=(n-1),j=(n-1)/2,k=2,a[i][j]=1;k<=n*n;k++)
if(a[(++i)%n][(++j)%n]==0)
a[i%n][j%n]=k;
else {a[(i=i-2)%n][(--j)%n]=k;}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");}
getch();
}
奇数阶魔方阵已经有线性代数的高人总结出了一般规律,就是根据N算出行矩阵和列矩阵,再按照一定算法就可写出,我的帖子里提到过:
http://bbs.bc-cn.net/viewthread.php?tid=126313&star=at#
不过偶数阶现在除了穷举我还没想到更好的方法!