发信人: 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]
|
|