“魔方阵”算法&稀疏矩阵三元组算法

作者在 2008-04-15 10:26:13 发布以下内容

用二维数组实现"魔方阵"的打印,所谓“魔方阵”是指满足每一行,每一列和对角线上的元素之和均相等的方阵。如:

8 1 6
3 5 7
4 9 2

就是一个三阶的魔方阵。现在要求编程实现任意输入一个自然数n,打印出相应的n阶魔方阵。

参考答案:

打印“魔方阵”算法如下所示:

void MagicMatrix( )

{

int a[16][16],i,j,k,p,m,n;

p=1;

while(p==1)      /*输入115的奇数*/

{

   printf("Please input n(n=1~15)\n");

   scanf("%d",&n);

   if ((n!=0) && (n<=15) &&(n%2 !=0))

      p=0;

}

/*Initialization*/

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");

}

}/*MagicMatrix*/

文章评论,共0条
游客请输入验证码
浏览55070次
最新评论