九阶幻方

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:37:30
求九阶幻方的填法,最好要有过程
恩,用方程怎么解?好像是不定方程

以下是用TC写的填幻方的程序代码适用于16阶以内的幻方
#include "stdio.h"
main()
{int n,i,j,k,x,y;
char cn;
static int t[16][16];
loop: printf("输入幻方阶数 n (0<n<16):");
scanf("%d",&n);
if((n%2==0)||(n<0)||(n>15))
{printf("此数不能构成幻方 \n");
goto loop;
}
else
{j=1;
k=(n+1)/2;
t[j][k]=1;
x=j;
y=k;
for(i=2;i<(n*n+1);i++)
{j=j-1;
k=k+1;
if((j<1)&&(k>n))
{j=j+2;
k=k-1;
}
else
{if(k>n) k=1;
else if(j<1) j=n;
}
if(t[j][k]==0) t[j][k]=i;
else
{j=x+1;
k=y;
t[j][k]=i;
}
x=j;
y=k;
}
}
for(j=1;j<(n+1);j++)
for(k=1;k<(n+1);k++)
{printf("%4d",t[j][k]);
if(k==n) printf("\n");
t[j][k]=0