iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
Software Development

練習java30天系列 第 29

Day30練習java-魔方陣+心得

  • 分享至 

  • xImage
  •  

原本想說都最後一天了,就寫個心得就好了ㄅ,但是同學突然問我要不要寫寫看魔方陣,引起我的好奇心想說試試,當作這三十的最後一題,首先先來介紹什麼是魔方陣:在一個方陣中每行、每列以及兩條對角線上的數之和均相等,而且方陣不是唯一,有區分成奇數階及偶數階,今天主要介紹的是奇數階,要構成奇數階的魔方陣我使用的方法為Siamese方法
步驟如下:
把1放置在第一行的中間。
順序將 2,3,等數放在右上方格中。
當右上方格出界的時候,則由另一邊進入。
當右上方格中已經填有數或是兩邊都出界(同時超出行與列的範圍),則把數填入正下方的方格中。
按照以上步驟直到填寫完所有N^2個方格。
(由於對稱性,也可以把右上改為右下、左上以及左下等方位)
以下是實作:
右上方開始
https://ithelp.ithome.com.tw/upload/images/20201015/20130684ejuGqOlg0F.png
演算部分參考https://openhome.cc/Gossip/AlgorithmGossip/OddArray.htm
這個網站寫的是從右上方開始
而我試著改成從右下方開始
https://ithelp.ithome.com.tw/upload/images/20201015/20130684nQwsPO4GTu.png
https://ithelp.ithome.com.tw/upload/images/20201015/20130684872k22m6Yx.png
其實如果仔細看兩者其實只是差在數字放入的地方不同,需要多判斷超出格子的方式,基本上都一樣
但是要從無寫出來我真的覺得不是很容易。
以下是完整的程式碼:
https://ithelp.ithome.com.tw/upload/images/20201015/20130684UljVByK9yy.pnghttps://ithelp.ithome.com.tw/upload/images/20201015/20130684edN61LgfFa.png

心得:
轉眼間連續寫程式已經不知不覺就過了一個月了,當初給自己定這個目標就是要督促自己寫程式培養實作的能力,說真的天天寫真的是有差,從最一剛開始連基本的迴圈要怎麼用都要去翻書,而現在連三層都能夠用想的寫出來,我認為是一項很有成就感的事,每天接觸不一樣的題目,能幫助思考的速度越來越快,而且我前面不知道是哪根筋不對竟然一直在寫演算法,跟其他的比演算法真的是最燒腦的一項挑戰,而最後也以演算法作結束,難度也比以往的高,雖然無法從無到有,但是理解後能夠自己做修改我認為也是進步的一種方式~~
最終期望自己這30天裡做的能對未來的專題有所幫助,也希望這門課能修過٩(^ᴗ^)۶


上一篇
Day29練習java-多執行序
下一篇
Day9 練習java-二維陣列
系列文
練習java30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言