"魔方阵"问题
3阶魔方阵:8 1 6
3 5 7
4 9 2
要求用C语言编程得到由1到n*n的自然数构成的魔方阵.请教高手,请给出源代码.
搜索更多相关的解决方案:
魔方阵
----------------解决方案--------------------------------------------------------
这是最近我看到的代码
#include <stdio.h>
void main()
{
int array[16][16];
int i,j,k,m,n;
m=1;
while(m==1)
{
printf("请输入n(0<n<=15),n是奇数)\n");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
{
printf("矩形阶数是%d\n",n);
m=0;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
array[i][j]=0;
j=n/2+1;
array[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(array[i][j]==0)
array[i][j]=k;
else
{
i=i+2;
j=j-1;
array[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%5d",array[i][j]);
printf("\n");
}
}
----------------解决方案--------------------------------------------------------
最近在这个论坛刚看到的
程序代码:
#include <stdio.h>
#define MAX 101
int main(void)
{
long nList[MAX][MAX],n=0,n1,n2;
while(!(n&1)){scanf(\"%d\",&n);} //输入阶数
for(n2=n*n,n1=0;n1<n2;n1++) //计算生成
{
nList[(n1*(n-1)+(n1/n)*2)%n][(n1+(n>>1)-n1/n)%n]=n1+1;
}
for(n2=0;n2<n;n2++) //结果输出
{
for(n1=0;n1<n;n1++)printf(\"%4d\",nList[n2][n1]);
printf(\"\n\");
}
return 0;
}
注:不存在超过4阶的偶数阶魔方阵
----------------解决方案--------------------------------------------------------
谢谢两位啊,我好好研究研究
----------------解决方案--------------------------------------------------------