魔方陣 奇數階 單偶數階 雙偶數階

2021-09-25 11:24:21 字數 1393 閱讀 7079

#include

#include

#include

int*

*magic1

(int n)

//奇數階魔方陣

int row =0;

int col = n/2;

for(

int i =

0;i)return arr;

}int**

magic2

(int n)

//單偶數階魔方陣(能被2整除,不能被4整除)(思路:可以分為4個奇數階矩陣)

int row =0;

int col = n/4;

for(

int i =

0;i<

(n*n)/4

;i++

)//左上n/2階矩陣賦值

row = n/2;

for(

int i =

0;i2;i++

,row++

)//右下n/2階矩陣賦值}

row =0;

for(

int i =

0;i2;i++

,row++

)//右上n/2階矩陣賦值}

row = n/2;

for(

int i =

0;i2;i++

,row++

)//左下n/2階矩陣賦值

}int t;

for(

int i =

0;i2;i++

)//n=4*k+2階矩陣左半邊數列行轉換,轉換規則1:左上矩陣當前位置元素值與左下矩陣相同位置元素值對調}

t =0;

for(

int i =

0;i2;i++

)//n=4*k+2階矩陣右半邊數列行轉換

}return arr;

}int**

magic3

(int n)

//雙偶數階,能同時被2和4整除(思路:把n階矩陣分為(n/4)*(n/4)個小4階矩陣,每個小矩陣對角線位置做出變換即可)

int t =0;

for(

int i =

0;iint row1 =0;

int col1 =0;

int row2 =0;

int col2 =0;

for(

int i =

0;i4;i++

)//控制從第i大行第乙個矩陣開始轉換}}

return arr;

}int

main()

printf

("\n");

}free

(arr)

;return0;

}

魔方陣 奇數階 單偶數階 雙偶數階

include include include int magic1 int n 奇數階魔方陣 int row 0 int col n 2 for int i 0 ireturn arr int magic2 int n 單偶數階魔方陣 能被2整除,不能被4整除 思路 可以分為4個奇數階矩陣 int...

奇數階魔方陣(洛書)

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

奇數階魔方

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 乙個 n 階方陣的元素是1,2,n 2,它的每行,每列和2條對角線上元素的和相等,這樣 的方陣叫魔方。n為奇數時我們有1種構造方法,叫做 右上方 例如下面給出n 3,5,7時 的魔方.38 1 6 3 5 7 4 9 2 517...