精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..各种开发技巧..〓〓>>算法、技巧和其他>>N阶幻方的求解(N大于等于3的奇数)

主题:N阶幻方的求解(N大于等于3的奇数)
发信人: wonghwa()
整理人: winsy(2003-03-05 16:32:51), 站内信件
我在以前,见过当N=奇数(>=3)的算法,至于N=偶数的算法,我就没有见过了,

我真希望已经有人求出其解了,可别忘了给我一份哦....

以下是算法的要令(举例以N=3为例):

我们把生成后的N幻方,用二维数组存储,如:X(1 TO 3,1 TO 3)
如果把方阵画成纸上的方格图,则演示如下:

FOR I = 1 TO N的平方
   1)把1放在方格阵中第一行的正中间一列,如:X(1,2)=1
   2)从方格等于1的位置开始数起,方法为行加1,列减1。
   3)当行或列有一边跑出边界时,位置就变成到未跑出边界的列或行的对边
      位置,如:X(1,2)—>X(0,3)时,行跑出边界,此时把位置
      X(0,3)移到位置X(3,3)=2
   4)当行和列同时跑出边界,或者位置上已经有数时,新位置则成为了行加1

      列不变,如:当X(1,3)—>X(0,4)时,行与列都跑出了边界,此时,

      新位置成为了X(2,3);当X(2,1)—>X(1,2)时,此时
      X(1,2)已经有数=1,此时新位置成为了X(3,1)=4
   5)填数的原则为:从第一个数(等于1)开始,每到到一新格,数加1,直到

      数等于N的平方
NEXT I

每线上的和 = (1+N的平方)/2 * N
如N=3时和 = (1+9)/2 * 3 = 15

以上是N=奇数的幻方的算法,不知我是否以叙述清楚,望来信交流。至于不用
算法的求解,我可是没有去算过,有网友求出其解的时候,希望能给我一份解
法,多谢了。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.142.116]

[关闭][返回]