魔方阵算法及C语言实现
下载后可任意编辑 魔方阵算法及C语言实现 1 魔方阵概念 魔方阵是指由1,2,3……n2填充的,每一行、每一列、对角线之和均相等的方阵,阶数n = 3,4,5…。魔方阵也称为幻方阵。 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方。而偶幻方又分为是4的倍数(如4,8,12……)和不是4的倍数(如6,10,14……)两种。下面分别进行介绍。 2 奇魔方的算法 2.1 奇魔方的规律与算法 奇魔方(阶数n = 2 * m + 1,m =1,2,3……)规律如下: 1. 数字1位于方阵中的第一行中间一列; 2. 数字a(1 < a ≤ n2)所在行数比a-1行数少1,若a-1的行数为1,则a的行数为n; 3. 数字a(1 < a ≤ n2)所在列数比a-1列数大1,若a-1的列数为n,则a的列数为1; 4. 假如a-1是n的倍数,则a(1 < a ≤ n2)的行数比a-1行数大1,列数与a-1相同。 2.2 奇魔方算法的C语言实现 1 #include 2 // Author: 3 // N为魔方阶数 4 #define N 11 5 6 int main() 7 { 8 int a[N][N]; 9 int i;10 int col,row;11 12 col = (N-1)/2;13 row = 0;14 15 a[row][col] = 1;16 17 for(i = 2; i <= N*N; i++)18 {19 if((i-1)%N == 0 )20 {21 row++;22 }23 else24 {25 // if row = 0, then row = N-1, or row = row - 126 row--;27 row = (row+N)%N;28 29 // if col = N, then col = 0, or col = col + 130 col ++;31 col %= N;32 }33 a[row][col] = i;34 }35 for(row = 0;row