魔方陣,古代又稱「縱橫圖」,是指組成元素為自然數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止各數依次按下列規則存放 每乙個數存放的行比前乙個數的行...