n階魔方陣是由乙個n×n的1到n2之間的自然數構成的矩陣。它的每一行、每一列和對角線之和均相等。例如,乙個三階魔方陣如下所示,它的每一行、每一列和對角線之和均為15。編寫程式,輸出n階魔方陣 ,n為奇數。
有乙個簡單的方法可以生成魔方陣。依次將1到n2填入矩陣,填入的位置由如下規則確定:
第1個元素放在第0行的中間一列。
下乙個元素放在當前元素的上一行、下一列。
如上一行、下一列已經填好,則下乙個元素的填入位置為當前列下一行。
在找上一行、下一行或下一列時,必須把矩陣看成是迴繞的。即:如果當前行是最後一行時,下一行為第0行;當前行是第0行時,上一行為最後一行;當前列是最後一列時,下一列為第0列。
c語言
#include
#define max 15
void
main()
;printf
(「輸入odd number,n<
15:\n")
;scanf
("%d"
,&n);if
(n%2==0
) n=n+1;
row=0;
col=
(n-1)/
2;a[row]
[col]=1
;//第0行中間填入1
for(i=
2;i<=n*n;i++
)else
a[row]
[col]
=i;// 填入
}printf
("%d階魔方陣如下:\n"
, n)
;for
(row=
0; row
)}
c++靜態陣列版本
#include
using
namespace std;
intmain()
}//求餘運算
int row=
0,col=2;
for(
int num=
1;num<5*
5;num++)}
//輸出
cout<<
"魔術方陣"
<
for(
int i=
0;i<
5;i++
) cout<
}}
c++動態陣列優化
#include
using
namespace std;
intmain()
int row=
0,col=radix/2;
for(
int num=
1;num<=radix*radix;num++)}
for(
int i=
0;i) cout<
}delete
data;
}
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 若填入的數字在該行的...