幻方演算法(Magic Square)

2021-07-30 09:53:26 字數 2339 閱讀 1715

一、幻方按照

階數可分

成了三類,

即奇數階幻方

、雙偶階幻方

、單偶階幻方。

二、奇數階幻方(勞伯法)

奇數階幻方最經典的填法是

羅伯法。填寫的方法是: 把

1(或最小的數)放在第一行正中;按以下規律排列剩下的

(n×n-1)

個數:(1)

每乙個數放在前乙個數的

右上一格; (2

)如果這個數所要放的格已經超出了頂行那麼就把它放在底行,仍然要放在右一列;(3

)如果這個數所要放的格已經超出了最右列那麼就把它放在最左列,仍然要放在上一行; (

4)如果這個數所要放的格已經超出了頂行且超出了最右列,那麼就把它放在底行且最左列; (

5)如果這個數所要放的格已經有數填入,那麼就把它放在前乙個數的下一行同一列的格內。

例,用該填法獲得的

5階幻方: 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二、雙偶數階幻方(海爾法)

所謂雙偶階幻方就是當

n可以被

4整除時的偶階幻方,即

4k階幻方。在說解法之前我們先說明乙個「互補數」定義:就是在

n階幻方中,如果兩個數的和等於幻方中最大的數與

1的和(即

n×n+

1),我們稱它們為一對互補數。如在三階幻方中,每一對和為

10的數,是一對互補數 ;在四階幻方中,每一對和為

17的數,是一對互補數。

雙偶數階幻方最經典的填法是海爾法。填寫的方法是: 以

8階幻方

為例:(1)

先把數字按順序填。然後,按

4×4把它分割成

4塊(如圖) 1

2 34 5

6 78 9

10 11

12 13

14 15

16 17

18 19

20 21

22 23

24 25

26 27

28 29

30 31

32 33

3435

3637 38

39 40

414243

4445 46

47 48

495051

5253 54

55 56

575859

6061 62

63 64

(2)每個小方陣對角線上的數字(如左上角小方陣部分),換成和它互補的數。 64

2 361 60

6 757 9

55 54

12 13

51 50

16 17

47 46

20 21

43 42

24 40

26 27

37 36

30 31

33 32

34 35

29 28

38 39

25 41

23 22

44 45

19 18

48 49

15 14

52 53

11 10

56 8

58 59

5 462 63

1 三、單偶數階幻方(斯特拉茲法)

所謂單偶階幻方就是當

n不可以被

4整除時的偶階幻方,即

4k+2

階幻方。如

(n=6,10

,14……)

的幻方。

單偶數階幻方

最經典的填法是

斯特拉茲法

。填寫的方法是: 以

10階幻方為例。這時,

k=2。(1

)把魔方陣分為a,

b,c,

d四個象限,這樣每乙個象限肯定是奇數階。用羅伯法,依次在

a象限,

d象限,

b象限,

c象限按奇數階幻方的填法填數。

2)在a象限的中間行、中間格開始,按自左向右的方向,標出k格。

a象限的其它行則標出最左邊的

k格。將這些格,和

c象限相對位置上的數互換位置。

3)在b象限所有行的中間格,自右向左,標出k-

1格。(注:

6階幻方由於k-

1=0,所以不用再作b、

d象限的資料交換

),將這些格,和

d象限相對位置上的數互換位置。

奇數幻方 輸入N得到NXN幻方

include intmain for int j 0 j1 j h j sum1 for int j 0 j1 j l j sum2 for int i 0 i 判斷每行 列相等個數 for int j 0 j1 j 計算對角線數字和 e n 1 for int i 0 i1 i 計算反對角線數字...

四階幻方 反幻方c

把1 16的數字填入4x4的方格中,使得行 列以及兩個對角線的和都相等,滿足這樣的特徵時稱為 四階幻方。四階幻方可能有很多方案。如果固定左上角為1,請計算一共有多少種方案。比如 1 2 15 16 12 14 3 5 13 7 10 4 8 11 6 9 以及 1 12 13 8 2 14 7 11...

5階幻方 奇異幻方 18中心 遺傳演算法

用遺傳演算法,配合資料庫,找了乙個五階的幻方。顛覆認知的是,18在中心,而且還成立。一般認為13在中心的。以下是找到的部分結果 18,10,25,7,5,6,22,3,14,20,11,2,13,24,15,9,12,23,4,17,21,19,1,16,8,18,12,23,7,5,6,22,1,...