奇數魔方陣

2021-10-08 20:56:19 字數 1073 閱讀 6990

魔方陣,古代又稱「縱橫圖」,是指組成元素為自然數1、2…n的平方的n×n的方陣,其中每個元素值都不相等,且每行、每列以及主、副對角線上各n個元素之和都相等。階數大於等於3。

如3×3的魔方陣:

8 1 6

3 5 7

4 9 2

奇數魔方陣的排列規律如下:

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

(2)從2開始直到n×n止各數依次按下列規則存放;每乙個數存放的行比前乙個數的行數減1,列數加1(例如上面的三階魔方陣,5在4的上一行後一列);

(3)如果上乙個數的行數為1,則下乙個數的行數為n(指最下一行);例如1在第一行,則2應放在最下一行,列數同樣加1;

(4)當上乙個數的列數為n時,下乙個數的列數應為1,行數減去1。例如2在第3行最後一列,則3應放在第二行第一列;

(5)如果按上面規則確定的位置上已有數,或上乙個數是第一行第n列時,則把下乙個數放在上乙個數的下面。例如按上面的規定,4應該放在第1行第2列,但該位置已經被佔據,所以4就放在3的下面;

輸入魔方陣的階數(階數大於等於3的奇數陣)

輸出魔方陣

按照題目給定的要求進行模擬,使用lastnumx和lastnumy來記錄上乙個點的座標,按照題目意思進行模擬

#include

#include

#include

using

namespace std;

int a[

100]

[100];

void

print

(int n)

printf

("\n");

}}intmain()

} a[0]

[n/2]=

1;lastnumx1=

0;lastnumy1=n/2;

lastnumx2=

0;lastnumy2=n/2;

for(

int num=

2;num<=n*n;num++

)else

}print

(n);

return0;

}

5奇數魔方陣

說明 將1 到n 為奇數 的數字排列在nxn的方陣上,且各行 各列與各對角線的和必須相同,如下所 示 解法 填魔術方陣的方法以奇數最為簡單,第乙個數字放在第一行第一列的正 然後向右 左 上 填,如果右 左 上已有數字,則向下填,如下圖所示 一般程式語言的陣列索引多由0開始,為了計算方便,我們利用索引...

acm奇數魔方陣

輸入檔案 input.txt 輸出檔案 output.txt 魔方矩陣是乙個n n 奇數矩陣,其中 n 2個元素分別是 1,2,3,4,5 n 2 魔方矩陣的特點是 任意一行 任意一列以及主副對角線的所有數之和均相等,且都等於 n n 2 1 2 如下圖所示的三階魔方矩陣 8 1635 7492 小...

奇數階魔方陣(洛書)

題目 將1 n的數子排列在n n的方陣上,要求數子不能重複,方陣各行 各列 及兩條對角線的數子之和相等。此位魔方陣,又稱洛書 洛書是九行九列 若n為奇數,則為奇數階魔方陣。解題方法 洛書的排列規律如下 將1放在第一行中間一列 從2開始直到n n止各數依次按下列規則存放 每乙個數存放的行比前乙個數的行...