N階魔方陣(C C )

2021-10-14 10:37:49 字數 1542 閱讀 5779

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