用罗伯法构造幻方
幻方是一种广为流传的数学游戏,据说早在大禹治水时就发现过。幻方的特点是:由自然数构成n×n正方形阵列,称为n阶幻方,每一行、每一列、两对角线上的数之和相等。法国人罗伯总结出了构造奇数阶连续自然数幻方的简单易行的方法“罗伯法”。下表就是一个用罗伯法排好的5阶幻方。
罗伯法的具体方法如下:
把1(或最小的数)放在第一行正中;
按以下规律排列剩下的n2-1个数:
1)每一个数放在前一个数的右上一格;
2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
4)如果这个数所要放的格已经超出了顶行且超出了最右列那么就把它放在前一个数的下一行同一列的格内;
5)如果这个数所要放的格已经有数填入,处理方法同4)。
只要是有规律的东西,计算机很容易就可以做到。
下面我们把罗伯法翻译成计算机算法思路:
定义一个n×n数组;
把1放在第0行第n\2列;
设当前格为(i�j),设一步长变量k(k=2->n�n)
1) i减1,j加1;
2) 如果i<0那么i=n-1;
3) 如果j>n-1那么j=0;
4) 如果2)和3)同时出现那么就把j减回1,i加上2;
5) 如果a(i�j)不为空那么按照4)处理;
6) 把k的值赋给当前格a(i�j);
继续循环;
输出幻方阵。
温馨提示:答案为网友推荐,仅供参考