这是九宫图问题。
填法有很多。
第一行:294
第二行:753
第三行:318
就是一种,然后顺次旋转,又可以得到另外不同的填法。
通常,是把这一列数的中间的数,也是这列数的平均数填在中间的格里。其余的8个数平均分成四对,最小和最大的两个数填在+字形的四个位置上。然后再依次填 上其它的就可以了。
问的是编程题吗?
下面是源程序和运行结果:
#include
main()
{
int i,j,k,l,m,n,o,p,q;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
if(i!=j)
{for(k=1;k<=9;k++)
if(k!=i && k!=j)
{for(l=1;l<=9;l++)
if(l!=i && l!=j && l!=k)
{for(m=1;m<=9;m++)
if(m!=i && m!=j && m!=k && m!=l)
{for(n=1;n<=9;n++)
if(n!=i && n!=j && n!=k && n!=l && n!=m)
{for(o=1;o<=9;o++)
if(o!=i && o!=j && o!=k && o!=l && o!=m && o!=n)
{for(p=1;p<=9;p++)
if(p!=i && p!=j && p!=k && p!=l && p!=m && p!=n && p!=o)
for(q=1;q<=9;q++)
if(q!=i && q!=j && q!=k && q!=l && q!=m && q!=n && q!=o && q!=p)
if(i+j+k==l+n+m && l+n+m==o+p+q && o+p+q==i+l+o && i+l+o==j+m+p && j+m+p==k+n+q && k+n+q==i+m+q && i+m+q==k+m+o)
printf("%d %d %d\n%d %d %d\n%d %d %d********横纵斜和是%d\n\n",i,j,k,l,m,n,o,p,q,i+j+k);
}}}}}}
}
4 3 8
9 5 1
2 7 6