奇數魔方陣 4N魔方陣 2(2N 1)魔方陣

2021-08-28 07:14:10 字數 1981 閱讀 7934

奇數魔方陣

說明:將1到n(為奇數)的數字排列在nxn的方陣上,且各行、各列與各對角線的和必須相同,如下所示:

解法:填魔術方陣的方法以奇數最為簡單,第乙個數字放在第一行第一列的正**,然後向右(左)上填,如果右(左)上已有數字,則向下填,如下圖所示。一般程式語言的陣列索引多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右(左)上 ,原理很簡單,看看是不是已經在同一列上繞一圈就對了。

#include

#define get_array_len(arr,row,column)

#define n 5

//這是定義巨集

using namespace std;

void

algorithmgossip

(int

(*arr)

[n+1])

;//二維陣列作為函式引數

intmain()

;//初始化為0,區域性變數需要此操作。

//int row,column;

//get_array_len(arr,row,column);

algorithmgossip

(arr)

;for

(int i =

1; i <= n ;

++i)

return0;

}void

algorithmgossip

(int

(*arr)[6

])else

}}

4n魔方陣說明:與 奇數魔術方陣 相同,在於求各行、各列與各對角線的和相等,而這次方陣的維度是4的倍數。

解法:

簡單的說,就是乙個從左上由1依序開始填,但遇對角線不填,另乙個由左上由16開始填,但只填在對角線,再將兩個合起來就是解答了;如果n大於2,則以 4x4為單位畫對角:

至於對角線的位置該如何判斷,有兩個公式,有興趣的可以畫圖印證看看,如下所示:

左上至右下:j % 4 == i % 4

右上至左下:(j % 4 + i % 4) == 1

#include

#include

//操作輸出格式需要加入的標頭檔案

#define n 8

using namespace std;

void

algorithmgossip

(int

(*arr)

[n+1])

;//二維陣列作為函式引數

intmain()

;//初始化為0,區域性變數需要此操作。

algorithmgossip

(arr)

;for

(int i =

1; i <=n;

++i)

return0;

}void

algorithmgossip

(int

(*arr)

[n+1])

}

2(2n+1)魔方陣說明:方陣的維度整體來看是偶數,但是其實是乙個奇數乘以乙個偶數,例如6x6,其中6=2x3,我們也稱這種方陣與單偶數方陣。

解法:就是一些規則,然後對方陣進行處理,就不列出具體**了,有興趣可以參考別的blog。

N階魔方陣

寫出程式填寫出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 0...

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 若填入的數字在該行的...