奇數階幻方

2021-04-13 06:20:10 字數 751 閱讀 7734

編制奇數階幻方的方法

問題如:http://community.csdn.net/expert/topic/5698/5698866.xml?temp=.1421167

簡單描述:給 1 - 9,9個數,擺放成 3 * 3 的矩陣,

要求每橫排,每豎排,對角線 上 3個數字相加均為15。其中矩陣也可為5*5,7*7等等。

演算法如下:http://210.77.218.4:8080/resource/xx/xxsx/sxbl/bl000071/11936_sr.htm

在奇數階方陣最上邊一行當中填上1,以後隨著在1的斜上方填上2、3…假如所填數字出了方陣,那就把它移進行方中,移動的原則是上移下,左移右。例如把2移到4列的最下邊,由2再斜右向上填3,因為4又越出了方陣,於是再把它移入第一列第3行中。從4起再右上填5,但在填6時,因為1已佔3那個小方格。遇此情況,就把6填在5的下邊,再右斜向上填7、8、9,因為9又越出幻方,再把它移到末行。斜右上填10,10越出幻方,就移到第一列…這樣,填滿小方格,就編出乙個幻方,如圖3-10所示。

根據這個演算法,我編寫了如下**,不是很簡潔

static

void

main(

string

args)

static

intmod(

inti, 

intj)

...

簡單說明一下,實現該演算法並不困難,關鍵在於理解迴圈佇列的相關結構。其中mod函式就是用來定位陣列下標。

N(奇數)階幻方解法

3階8 1635 7492 5階17241 815235 714164 6132022 1012 1921311 182529 include includeusing namespace std const int n 9 定義階數,當前9階 該演算法只適合奇數階幻方 int main int a...

奇數階幻方構造法

siamese方法 kraitchik 1942年,pp.148 149 是構造奇數階幻方的一種方法,說明如下 由於幻方的對稱性,也可以把右上改為右下 左上以及左下等方位 實現 include includeusing namespace std int main else if i 0 i n 1...

magic squire幻方的學習 奇數階幻方

今天介紹了關於幻方的一些知識,並布置了一些相關的家庭作業。幻方,我的理解就是一種數獨吧,要求每行每列還有對角邊的和都一樣,填進空格的數字是1 n n是階數,比如三階幻方就是將1到9的數字填進3x3的九宮格裡。所有數字的和可以用求和公式 1 2 n n n 1 2 假設每行每列的和為 s,那麼 3s ...