#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...