魔方陣演算法

2022-03-21 06:13:00 字數 868 閱讀 8043

輸出"魔方陣"。所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如,三階魔方陣為

8 1 6

3 5 7

4 9 2

要求輸出1~n*n的自然數構成的魔方陣。

解:魔方陣中各數的排列規律如下:

(1)將1放在第1行的中間一列。

(2)從2開始直到n×n止各數依次按下列規則存放:每乙個數存放的行比前乙個數的行數減1,

列數加1(例如上面的三階魔方陣,5在4的上一行後一列).

列數同樣加1. 

則3應放在第2行第1列。

上乙個數的下面。例如,按上面的規定,4應該放在第1行第2列,但該位置已經被1佔據,

所以4就放在3的下面。7應該放在第3行第1列,但該位置已經被4佔據,故7放在6下面。

按此方法可以得到任何階的魔方陣。

注意:魔方陣的階數應奇數,程式指定其最大值為15。今定義陣列a為16行16列,對第0行0列不用來存放資料,只用第1~15行,使讀者看程式時比較符合習慣。

1 #include2 #include3

#define size 50;

4main()

515 row = 1; col = (n+1)/2; value = 1;16

while(value<=n*n)

1728

else

29 row++;

30 value=value+1

; 31

}32 printf("

\n%d 階魔方陣如下所示:\n\n

",n);

33for(row = 1; row <= n; row++)

3439 }

魔方陣的演算法

魔方陣的演算法原理 魔方陣 1 將1放在第一行中間一列 2 從2開始直到n n止各數依次按下列規則存放 按 45 方向向右上走,每乙個數存放的行比前乙個數的行數減1,列數加1 3 如果行列範圍超出矩陣範圍,則迴繞。例如1在第1行,則2應放在最下一行,列數同樣加1 又如某個數在第n列,則下乙個數應放在...

魔方陣1 奇階魔方陣

魔方陣 古代又稱 縱橫圖 是指組成元素為自然數1 2 n2的平方的n n的方陣,其中每個元素值都不相等,且每行 每列以及主 副對角線上各n個元素之和都相等。魔方陣分為奇階魔方陣和偶階魔方陣,偶階魔方陣又分為能被四整除和不能被四整除兩種,今天來給大家講解奇階魔方陣,後續會為大家補充剩餘的魔方陣。奇階魔...

奇數魔方陣(經典演算法)

說明 將1到n 為奇數 的數字排列在nxn的方陣上,且各行 各列與各對角線的和必須相同,如下所示 解法一般程式語言的陣列索引多由0開始,為了計算方便,我們利用索引1到n的部份。第乙個數字放在第一行第一列的正 在計算向右 左 上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右 左...