當前位置:
首頁 > 知識 > 如何用C語言玩轉魔方陣

如何用C語言玩轉魔方陣

奇數魔方陣

奇數魔方陣就是將數字排列在nxn(n為奇數)的方陣上,要求滿足各行、各列與各對角線的和相同。如下圖所示,是n=5的奇數魔方陣。

想要一起學習C++的可以加裙三四零六五一六八七,裙內有各種資料滿足大家,歡迎加裙

填魔方陣的方法以奇數魔方陣最為簡單,第一個數字放在第一行的正中央(填了1),然後向右(左)上填,如果右(左)上已有數字,則向下填,如下圖所示:

一般程序語言的陣列多由0開始,為了計算方便,我們利用索引1到n的部份,而在計算是向右(左)上或向下時,我們可以將索引值除以n值,如果得到餘數為1就向下,否則就往右(左)上。

#include

#include

#define N 5

int main(void) {

int i, j, key;

int square[N+1][N+1] = ;

i = 0;

j = (N+1) / 2;

for(key = 1; key

if((key % N) == 1)

i++;

else {

i--;

j++;

}

if(i == 0)

i = N;

j = 1;

square[i][j] = key;

}

for(i = 1; i

for(j = 1; j

printf("%2d ", square[i][j]);

printf("

");

}

return 0;

}

4N 魔方陣

與奇數魔術方陣相同,在於求各行、各列與各對角線的和相等,不同的是這次方陣的維度是4的倍數。

想要一起學習C++的可以加裙三四零六五一六八七,裙內有各種資料滿足大家,歡迎加裙

先來看看4X4方陣的解法:

簡單的說,就是一個從左上由1依序開始填,但遇對角線不填,另一個由左上由16開始填,但只填在對角線,再將兩個合起來就是解答了。如果N大於等於2,則以 4X4為單位畫對角線,如下所示:

至於對角線的位置該如何判斷,有兩個公式,有興趣的可以畫圖印證,如下:

左上至右下:j % 4 == i % 4

右上至左下:(j % 4 + i % 4) == 1

8階魔方陣(N=2)的結果如下:

#include

#include

#define N 8

int main(void) {

int i, j;

int square[N+1][N+1] = ;

for(j = 1; j

for(i = 1; i

if(j % 4 == i % 4 || (j % 4 + i % 4) == 1)

square[i][j] = (N+1-i) * N -j + 1;

else

square[i][j] = (i - 1) * N + j;

}

}

for(i = 1; i

for(j = 1; j

printf("%2d ", square[i][j]);

printf("

");

}

return 0;

}

想要一起學習C++的可以加裙三四零六五一六八七,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 魔方 的精彩文章:

酷比魔方IWork 1X:千元內買到的高性價比筆記本
魔方60秒:紅單收米就是屌!
酷比魔方Thinker詳細評測 輕薄辦公可打LOL王者榮耀
世界上最狂的3D列印魔方!散開的那一剎我慌了
健美「四步魔方」

TAG:魔方 |

您可能感興趣

「魔方」髮蠟,好用又好玩
語言的魔方:語言塑造文化
另類解魔方:只用雙腳不動手
教你學習如何製作無限翻轉的遊戲魔方!
玩轉學習的魔方
火影手游:為何說魔方用心做C忍,用腳做S忍呢?
玩轉智能魔方,阿凡達智控魔方帶你置身魔幻世界
用摺紙的方式玩魔方?這些幽靈方塊的變身我能看一天
魔方娛樂教程,魔方娛樂作弊器,魔方娛樂技巧,魔方娛樂作弊
糖果口語學習魔方開箱:帶真人對話的AI英語私教
魔方部落 魔力何在?
什麼魔方磚?用魔方磚鋪設地面效果怎麼樣?
魔方真的有「魔法」嗎?
糖果口語學習魔方體驗:隨身AI英語輔導能手
魔方,神奇的小玩意
把蛋糕玩成魔方,「甜品男神」的奇思妙想
如果思想是魔方,操控它就是一場針尖上的舞蹈
影視魔方 水形物語
高效止血:用環糊精來搭魔方
魔方紋身