給你一個思路,此思路不僅能解決3*3的格子相加的問題。
還能解決5*57*79*9等等奇數個格子的問題,以此類推。。。
這就是任意奇階幻方的構造法,中國早在大禹治水的時候就已經發現了這個規律的。宋代數學家楊輝更有總結:“九子排列,上下對易,左右相更,四維挺出。”,閒話不說,開始吧:
我們以3*3為例,一共有9個格子,就是九宮格了。
那麼我們要填寫1~9共9個數字。
我們用r表示行,c表示列。例如r9c7就表示第9行第7列
首先,把“1”填寫到第一列,中間行的一個格子。對於3*3的格子來說就是r2c1
好了,其他的數字只要按照以下規律填寫就可以了:
從1開始,按順序把其他數字填寫在上一個數字的左上角。如果遇到左上角已經被填寫,就填寫在同一行的右邊一個格即可,然後繼續左上角。。。。注意:把上下左右看作是連線起來的
例如:現在3*3的格子。我們把“1”填寫在r2c1
那麼“2”就應該填寫在r2c1的左上角,也就是縱座標和橫座標各減“1”,即,填寫“2”的格子的座標就是r1c0可是沒有c0這個列啊,剛才我們講了,把左右看成是連結起來的。也就是可以吧c3看成是c0,那麼我們就找到了“2”該填寫的地方,也就是r1c3,然後再來填寫“3”,把上下看成是連結起來的,就應該把“3”填寫在r3c2,然後“4”應該填寫在r2c1,但是這個時候r2c1已經填寫了“1”了,所以我們按照規則,把他填寫在右邊,就是在“3”的右邊,即r3c3,接著又把“5”填寫在r2c2以此類推就能得到正確結果。。。。。
填寫好的形式如下:
672
159
834
建議你參考一下數學上面的“羅伯幻方”,這是中國在n年前就解決了的數學問題
程式寫起來非常簡單,我就不給你寫了,你自己想想怎麼寫吧,實在不會寫再來找我幫你寫。
給你一個思路,此思路不僅能解決3*3的格子相加的問題。
還能解決5*57*79*9等等奇數個格子的問題,以此類推。。。
這就是任意奇階幻方的構造法,中國早在大禹治水的時候就已經發現了這個規律的。宋代數學家楊輝更有總結:“九子排列,上下對易,左右相更,四維挺出。”,閒話不說,開始吧:
我們以3*3為例,一共有9個格子,就是九宮格了。
那麼我們要填寫1~9共9個數字。
我們用r表示行,c表示列。例如r9c7就表示第9行第7列
首先,把“1”填寫到第一列,中間行的一個格子。對於3*3的格子來說就是r2c1
好了,其他的數字只要按照以下規律填寫就可以了:
從1開始,按順序把其他數字填寫在上一個數字的左上角。如果遇到左上角已經被填寫,就填寫在同一行的右邊一個格即可,然後繼續左上角。。。。注意:把上下左右看作是連線起來的
例如:現在3*3的格子。我們把“1”填寫在r2c1
那麼“2”就應該填寫在r2c1的左上角,也就是縱座標和橫座標各減“1”,即,填寫“2”的格子的座標就是r1c0可是沒有c0這個列啊,剛才我們講了,把左右看成是連結起來的。也就是可以吧c3看成是c0,那麼我們就找到了“2”該填寫的地方,也就是r1c3,然後再來填寫“3”,把上下看成是連結起來的,就應該把“3”填寫在r3c2,然後“4”應該填寫在r2c1,但是這個時候r2c1已經填寫了“1”了,所以我們按照規則,把他填寫在右邊,就是在“3”的右邊,即r3c3,接著又把“5”填寫在r2c2以此類推就能得到正確結果。。。。。
填寫好的形式如下:
672
159
834
建議你參考一下數學上面的“羅伯幻方”,這是中國在n年前就解決了的數學問題
程式寫起來非常簡單,我就不給你寫了,你自己想想怎麼寫吧,實在不會寫再來找我幫你寫。