魔術方陣 的演算法

時間 2021-12-18 21:57:14

1樓:匿名使用者

以n(沒有偶階魔方)階魔方為例,首先第一行的中間數為1,下乙個數如果不是n的倍數加1,列加1,行減1(如果列大於n,則列減n,如果行小於0則行加n)

如果是n的倍數加1,則行加1(如果行大於n,則行減n)程式如下:

#include "stdio.h"

void magicsquare(int n)else //不是n的倍數加1 }

for(i=0;i

int main()

2樓:三斷笛

這題奇數是有數學方法的,可以構造出解。描述起來比較麻煩。

出一解的構造法:

首先在整個矩陣的最下面一行的**置1,

然後向右下方向順序填上2,3,4,5,6,7,……注意碰到底的時候就將數翻到上面去,碰到右邊的時候就翻到左面去比如5*5的幻方,如果1填在(5,3)處,2就應該填在(1,4)處,4就應該填在(3,1)處……

另外,當原數的下方已經有數時,要將要填入的數填到原數正上方仍舉5*5幻方的例子,當5已填好(4,2)時,其右下方為1,不能把6填在那裡,而應填在(3,2)處,即5的上方。

最後,乙個特殊的點,右下角,這時也應當將新數填在右下角的上方。

11 18 25 2 9

10 12 19 21 3

4 6 13 20 22

23 5 7 14 16

17 24 1 8 15

以下給出源程式:

#include

main()

else if(i==n) }

else if(a[j+1][i+1]==0) }for(j=1;j<=n;j++)

getch();}

魔方陣的問題,魔方陣問題演算法?

如3 3的魔方陣 魔方陣的排列規律如下 1 將1放在第一行中間一列 2 從2開始直到n n止各數依次按下列規則存放 每乙個數存放的行比前乙個數的行數減1,列數加1 例如上面的三階魔方陣,5在4的上一行後一列 5 如果按上面規則確定的位置上已有數,或上乙個數是第一行第n列時,則把下乙個數放在上乙個數的...

求n階魔方陣的演算法用標準c語言的風格來做的

三階魔方陣 816357 492我把演算法給你吧 1,將1放在第一行中間一列 2,後面的數如此排列 每乙個數放在上乙個數的行數減一,列數加一的位置上 如5在4的右上格 3,當上個數的行數為一,則下個數的行數為n 如1在第一行,2放到最後一行,列數依然加一 4,當上個數列數為n,則下個數的列數為1 如...

羅馬方陣與希臘方陣和馬其頓方陣相比的優劣

嘿嘿,具體的戰例以及對比很長很長的,超過1萬字的,但是相對來說,希臘 馬其頓 羅馬的。http tieba.baidu.com f?kz 751486780 這個 上面有詳細的介紹以及經典的戰例。羅馬方陣與希臘方陣和馬其頓方陣相比的優劣是什麼?希臘方陣 羅馬方陣 馬其頓方陣各有什麼不同?希臘方陣 羅...

南韓年齡的演算法,南韓的年齡演算法,

所謂韓式年齡演算法就是 當年出生年份1 類似於中國的 虛歲 只不過變更點挪到了陽曆新年。但是陰曆在南韓依然很有市場,而陰曆的尾巴 陽曆的開頭出生的中老年人,又特別喜歡把自己歸入上一年,這就和中國的虛歲基本一樣。南韓人認為嬰兒在母親子宮內的年齡也要算,所以剛出生就算是1歲了。所以如果2018年2月15...

凱撒演算法的問題,凱撒演算法是屬於對稱加密演算法嗎?

第一次可獲2分,答案被可獲得懸賞分和額外20分獎勵。include include include define max size 100 最大字元數 void encrypt 加密演算法 else if code j a code j printf 對應的密文 s code void decryp...