回 帖 发 新 帖 刷新版面

主题:魔方问题!!!!!求助

魔方阵就是这个方阵的每一行,每一列和对角线之和均相等。
编写程序输出由1—-n*n  的自然数构成的魔方阵。
[color=FF0000]请教各位高手!!!!!谢谢!!!![/color]

回复列表 (共4个回复)

沙发

顶一下,我没研究过~~

相比之下拉丁方的生成要容易得多

板凳

#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 楼

用过matlab里的magic()函数,就知道爽了~~100*100的都很快生成~~

4 楼

谢谢各位大哥帮忙!!!特别是二楼的大哥!!!谢谢!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册