这个题目是添魔方阵,所谓n阶魔方是把1到n平方的连续正整数填到一个n * n的方阵中,使得每一列的和,每一行的和,对角线的和都相等.上下对易,左右相更,四维突出
我们可以从中发现一个规律:
这个问题其实你可以去百度一下,是有规律的可遵循的.
奇数阶幻方最经典的填法是罗伯法.填写的方法是:
把1(或最小的数)放在第一行正中; 按以下规律排列剩下的n×(n-1) n*n-1个数:
(1)每一个数放在前一个数的右上一格;
(2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
(3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
(4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;
(5)如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内.
以上方法也称为楼梯法可以简单表述如下:
从第一行中间开始是1,每次往右上角移动递增1,如果右上角有数或者没地方,就在原数下面"安家",如果是右边或者上面没有地方,则向上到底部,向右到左边.
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
i=1; j=n/2+1;
for(k=2;k<=n*n;k++)
i=i-1;j=j+1;
用lingo或者matlab,里面引进了集合的理论,只要算出其中一行的总和,然后就按条件去做,下面有个参考的资料.