N階魔方陣

2021-06-28 03:29:07 字數 1063 閱讀 1020

寫出程式填寫出n*n「魔方陣」的數值。所謂魔方陣是指這樣的方陣,資料是正整數,從1開始,每個遞增1,每個資料不重複出現,它的每一行、每一列和對角線之和均相等(n是奇數)。

input

3

5

output

8  1   6

3   5  7

4   9   2

17 24 01 08 15

23 05 07 14 16

04 06 13 20 22

10 12 19 21 03

11 18 25 02 09

規律:(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的下面; 

#include #include #include #include using namespace std;

int main()

; int i,j;//記錄當前行列

int i1,j1;//記錄前乙個位置的行列

int n,m;

while(~scanf("%d",&n))

}for(i1=0;i1

n階魔方陣

魔方陣 計算規律 1.將1放在第一行中間一列 2.從2開始到nn按如下規律 每乙個數存放的行數比上乙個數的行數減1 每乙個數存放的列數比上乙個數的列數加1 3.當乙個數的行數為1,他的下乙個數行數為n 4.當乙個數的列數為n,他的下乙個數的列數為1,行數減1 5.若按上述規則確定的位置有數字或上乙個...

n階魔方陣

奇數階魔方陣就是指行列數都是吧n n 3 且 n 2 1 的魔方陣 奇數階魔方陣的數字規律 通過對奇數階魔方陣的分析,其中的數字排列有如下的規律 1 自然數1出現在第一行的正中間 2 若填入的數字在第一行 不在第n列 則下乙個數字在第n行 最後一行 且列數加1 列數右移一列 3 若填入的數字在該行的...

N階魔方陣(C C )

n階魔方陣是由乙個n n的1到n2之間的自然數構成的矩陣。它的每一行 每一列和對角線之和均相等。例如,乙個三階魔方陣如下所示,它的每一行 每一列和對角線之和均為15。編寫程式,輸出n階魔方陣 n為奇數。有乙個簡單的方法可以生成魔方陣。依次將1到n2填入矩陣,填入的位置由如下規則確定 第1個元素放在第...