主题:魔方问题!!!!!求助
221986
[专家分:0] 发布于 2007-03-28 19:12:00
魔方阵就是这个方阵的每一行,每一列和对角线之和均相等。
编写程序输出由1—-n*n 的自然数构成的魔方阵。
[color=FF0000]请教各位高手!!!!!谢谢!!!![/color]
回复列表 (共4个回复)
沙发
Rick0ne [专家分:1490] 发布于 2007-03-28 22:14:00
顶一下,我没研究过~~
相比之下拉丁方的生成要容易得多
板凳
江南孤峰 [专家分:1520] 发布于 2007-03-29 22:10:00
#include <stdio.h>
void main()
{
int a[16][16],i,j,k,p,m,n;
p=1;
while(p==1) /*要求阶数为1~15的奇数*/
{
printf("Enter n(n=1~15):)");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0; /*初始化*/
/*建立魔方*/
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if((i<1)&&(j>n))
{i=i+2;
j=j-1;}
else
{if(i<1)i=n;
if(j>n)j=1;}
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
3 楼
Rick0ne [专家分:1490] 发布于 2007-03-29 22:27:00
用过matlab里的magic()函数,就知道爽了~~100*100的都很快生成~~
4 楼
221986 [专家分:0] 发布于 2007-03-30 17:46:00
谢谢各位大哥帮忙!!!特别是二楼的大哥!!!谢谢!!!!
我来回复