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

2021-10-10 22:03:08 字數 4059 閱讀 9404

用遺傳演算法,配合資料庫,找了乙個五階的幻方。

顛覆認知的是,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,16,20,9,2,13,24,17,11,10,25,4,15,21,19,3,14,8,

18,12,23,7,5,6,22,1,16,20,11,2,13,24,15,9,10,25,4,17,21,19,3,14,8,

18,12,23,7,5,9,22,1,16,17,6,2,13,24,20,11,10,25,4,15,21,19,3,14,8,

18,12,23,7,5,9,22,1,16,17,11,2,13,24,15,6,10,25,4,20,21,19,3,14,8,

18,12,23,7,5,11,22,1,16,15,6,2,13,24,20,9,10,25,4,17,21,19,3,14,8,

18,12,23,7,5,11,22,1,16,15,9,2,13,24,17,6,10,25,4,20,21,19,3,14,8

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.threading.tasks;

using system.windows.forms;

namespace fivelevelmagicnumber

private

void

form1_load

(object sender,

eventargs e)

private

void

button1_click

(object sender,

eventargs e));

}private

voidga(

label l)))

;//讀出得分最高的前12345種排列

sql = $@"select top 12345 id,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15

,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,fitness from fivelevelmagicnumber2

order by fitness desc"

; dthightscore.

clear()

; dthightscore = sqlhelper.

getdatatable

(sql)

; = dthightscore;

maxrows = dthightscore.rows.count;

//隨機篩選裡面的一種結果

genationn = r1.

next(0

, maxrows)

;//對其中的兩個數進行調換

swapn1 = r2.

next(1

,26);

swapn2 = r2.

next(1

,26);

if(swapn1 == swapn2)

//交換

swap = dthightscore.rows[

genationn][

swapn1].

tostring()

; dthightscore.rows[

genationn][

swapn1]=

dthightscore.rows[

genationn][

swapn2].

tostring()

; dthightscore.rows[

genationn][

swapn2

]= swap;

//交換之後計算每行、每列的和

score =0;

for(

int j =

0; j <

5; j++)}

for(

int j =

0; j <

5; j++)}

//斜對角加分if(

int.

parse

(dthightscore.rows[

genationn][

1].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

7].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

13].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

19].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

25].tostring()

)==65)

if(int.

parse

(dthightscore.rows[

genationn][

5].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

9].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

13].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

17].tostring()

)+int.

parse

(dthightscore.rows[

genationn][

21].tostring()

)==65)

dthightscore.rows[

genationn][

"fitness"

]= score;

sql = $@"insert into [dbo].[fivelevelmagicnumber2] ( [n1], [n2], [n3], [n4], [n5], [n6], [n7]

, [n8], [n9], [n10], [n11], [n12], [n13], [n14], [n15], [n16], [n17], [n18], [n19], [n20], [n21], [n22], [n23]

, [n24], [n25], [fitness]) values (

n'', n''

, n'',n''

,n'', n''

, n'', n''

, n''

, n'', n''

, n'', n''

, n'', n''

, n'', n''

, n'',n''

, n'', n''

, n'', n''

, n'', n''

, n'')"

; sqlhelper.

executenonquery

(sql);}}}}

奇數階幻方

編制奇數階幻方的方法 問題如 http community.csdn.net expert topic 5698 5698866.xml?temp 1421167 簡單描述 給 1 9,9個數,擺放成 3 3 的矩陣,要求每橫排,每豎排,對角線 上 3個數字相加均為15。其中矩陣也可為5 5,7 7...

四階幻方 反幻方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...

c 奇階幻方

奇階幻方的產生規則 將1放在第一行中間一列 從2開始直到n n止各數依次按下列規則存放 按 45 方向行走,如向右上 每乙個數存放的行比前乙個數的行數減1,列數加1 如果行列範圍超出矩陣範圍,則迴繞。如果按上面規則確定的位置上已有數,或上乙個數是第1行第n列時,include include usi...