如何用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英語輔導能手
※魔方,神奇的小玩意
※把蛋糕玩成魔方,「甜品男神」的奇思妙想
※如果思想是魔方,操控它就是一場針尖上的舞蹈
※影視魔方 水形物語
※高效止血:用環糊精來搭魔方
※魔方紋身