這個問題比上一題的奇數階魔方陣還難做,同樣相關資料參考了尤怪之家(http://home.educities.edu.tw/oddest/)的資料,採用裏面的"斜角註記法"修改成程式,這個程式只能用於4的倍數階的魔方陣填寫

 

填製時,先將整個方陣劃分成 k2 個 4 階方陣,然後在每個 4 階方陣的對角線上做記號。接著自左上角開始,由左而右、由上而下,遇到有記號的位置才填數字,但不管是否填入數字,每移動一格數字都要加 1。最後自右下角開始,由右而左、由下而上,遇到沒有數字的位置就填入數字,但每移動一格數字都要加 1。填滿方陣後,即是 4 k 階的魔方陣了

 

 

 

依據以上網站內的說明,程式架構拆成3個主體:

 

1.先產生1個4階的基礎陣列,然後在陣列的對角線做記號。為了方便後續程式書寫,基礎陣列預設值是-1,做記號的位置則把數值改成0

20111210-03  

 

 

2.依據設定的階數把基礎陣列組合成更大的陣列,當然做記號的部分完全符合填製規則

20111210-04  

 

 

3.實際數值的填寫,用3重迴圈分兩階段填寫:


a.第一階段從左上角開始,由左而右、由上而下,用雙迴圈填寫。跳過不是0的位置(沒有記號),只在數值是0的位置(有記號)用置換法把數值寫入


b.第二階段從右下角開始,由右而左、由下而上,用雙迴圈填寫。只針對數值為-1的位置(還未填寫數值)用置換法把數值寫入

20111210-05  

 

 

在填寫程式架構前再加上判斷輸入的階數是否為4的倍數的程式,完成整個程式

20111210-02  

 

20111210-01  

 

20111210-06  

  

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()