複製鏈接
請複製以下鏈接發送給好友

羅伯法

鎖定
是構造幻方的一種數學方法幻方是一種廣為流傳的數學遊戲,據説早在大禹治水時就發現過。幻方的特點是:由自然數構成n×n正方形陣列,稱為n
中文名
羅伯法
類    別
計算方法
相關學科
數學
矩    陣
幻方陣

羅伯法構造幻方

用羅伯法構造幻方 :
幻方是一種廣為流傳的數學遊戲,據説早在大禹治水時就發現過。幻方的特點是:由自然數構成n×n正方形陣列,稱為n
圖1 5階幻方 圖1 5階幻方
幻方,每一行、每一列、兩對角線上的數之和相等。當n為奇數時,我們稱幻方為奇階幻方。法國人羅伯總結出了構造奇數階連續自然數幻方的簡單易行的方法“羅伯法”。圖1就是一個用羅伯法排好的5階幻方
羅伯法的助記口訣:
(初學者可先畫出一個N×N的方格陣)
1 居上行正中央——數字 1 放在首行最中間的格子中
依次斜填切莫忘——向右上角斜行,依次填入數字
上出框界往下寫——如果右上方向出了上邊界,就以出框後的虛擬方格位置為基準,將數字豎直降落至底行對應的格子中
右出框時左邊放——同上,向右出了邊界,就以出框後的虛擬方格位置為基準,將數字平移至最左列對應的格子中
重複便在下格填——如果數字{N} 右上的格子已被其它數字佔領,就將{N+1} 填寫在{N}下面的格子中
右上重複一個樣——如果朝右上角出界,和“重複”的情況做同樣處理

羅伯法具體方法

羅伯法的具體方法如下:
把1(或最小的數)放在第一行正中;
按以下規律排列剩下的n2-1個數:
(1)每一個數放在前一個數的右上一格;
(2)如果這個數所要放的格已經超出了頂行那麼就把它放在底行,仍然要放在右一列;
(3)如果這個數所要放的格已經超出了最右列那麼就把它放在最左列,仍然要放在上一行;
(4)如果這個數(例如6)所要放的格已經超出了頂行且超出了最右列那麼就把它放在它的下一行同一列的格內;
(5)如果這個數所要放的格已經有數填入,處理方法同(4)。
只要是有規律的東西,計算機很容易就可以做到。

羅伯法計算機思路

下面我們把羅伯法翻譯成計算機算法思路:
定義一個n×n數組;
把1放在第0行第n\2列;
設當前格為(i?j),設一步長變量k(k=2->n?n)
(1) i減1,j加1;
(2)如果i<0那麼i=n-1;
(3) 如果j>n-1那麼j=0;
(4)如果(2)和(3)同時出現那麼就把j減回1,i加上2;
(5) 如果a(i,j)不為空那麼按照(4)處理;
(6)把k的值賦給當前格a(i,j);
繼續循環;
輸出幻方陣