用遺傳演算法,配合資料庫,找了乙個五階的幻方。
顛覆認知的是,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...