求教关于偶数阶幻方的构造方法!!! ( 积分: 20 )

  • 主题发起人 主题发起人 bryantd
  • 开始时间 开始时间
B

bryantd

Unregistered / Unconfirmed
GUEST, unregistred user!
我本人从网上查得“奇数阶幻方”的算法如下:
1。将1放在第一行的中间列。
2。如果当前数是在第一行,则将下一数放在下一列的最后一行。
3。如果当前数是在最后一列,则将下一数放在上一行的第一列。
4。如果当前数是在第一行也在最后一列,则将下一数放在当前数的下方。
5。如果当前数的右上方是空,则将下一个数放在右上方。
6。如果当前数的右上方有数,则将下一个数放在当前数的下方。
具体的排列如下:
3*3 (1--9) 行列和为15
8 1 6
3 5 7
8 4 2
5*5 (1--25) 行列和为65
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
7*7 (1--49) 行列和为175
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
我觉得还是个不错的算法,而且实现起来也很简单。
但是我想求得一个“偶数阶幻方的构造方法”,请大家帮忙找找。请您不要贴出代码就不管了,我也想要类似于“奇数阶”那样的算法过程,谢谢啦!!!
 
我本人从网上查得“奇数阶幻方”的算法如下:
1。将1放在第一行的中间列。
2。如果当前数是在第一行,则将下一数放在下一列的最后一行。
3。如果当前数是在最后一列,则将下一数放在上一行的第一列。
4。如果当前数是在第一行也在最后一列,则将下一数放在当前数的下方。
5。如果当前数的右上方是空,则将下一个数放在右上方。
6。如果当前数的右上方有数,则将下一个数放在当前数的下方。
具体的排列如下:
3*3 (1--9) 行列和为15
8 1 6
3 5 7
8 4 2
5*5 (1--25) 行列和为65
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
7*7 (1--49) 行列和为175
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
我觉得还是个不错的算法,而且实现起来也很简单。
但是我想求得一个“偶数阶幻方的构造方法”,请大家帮忙找找。请您不要贴出代码就不管了,我也想要类似于“奇数阶”那样的算法过程,谢谢啦!!!
 
没有人会吗?再次请教了!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3222848
另外还有:对角线上的数对换,其他数不动。
 
如:
1   2  3  4
5   6  7  8
9  10 11 12
13 14 15 16
---------------------------
得到:
16  2  3 13
5 11 10  8
9  7  6 12
 4 14 15  1
 
楼上的你的方法对于非4的倍数的幻方没用……
 
后退
顶部