上一次介绍了奇阶魔方阵的实现,今天来介绍偶阶魔方阵(四的倍数)的实现。
偶阶魔方阵的实现步骤:1.用横线和竖线将n阶方阵划分为m个4*4的小方阵;
2.将n*n个数从小到大,从左到右,从上到下依次填入方阵中,遇到4*4小方阵的对角线不填(此位置不填的数不作为下一个位置填入的数)
3.将n*n个数从大到小,从左到右,从上到下依次填入方阵中4*4小方阵的对角线上,其他位置不填(此位置不填的数不作为下一个位置填入的数)
4.偶阶魔方阵完成。
下面进行图解(以8阶为例):
代码实现的时候会遇到如何判断对角线的问题,我们来找一找对角线的规律:
对角线的规律找到,就可以编写代码了:
void MagicSquare()
{
#define ROW 8
#define COL ROW
int arr[ROW][COL];
int tmp1 = 1;
int tmp2 = ROW*COL;
for(int i=0;i<ROW;i++)
{
for(int j=0;j<COL;j++)
{
if((i%4==j%4) || (i+j)%4==3)//对角线
{
arr[i][j] = tmp2;
}
else
{
arr[i][j] = tmp1;
}
tmp1++;
tmp2--;
}
}
for(int i=0;i<ROW;i++)
{
for(int j=0;j<COL;j++)
{
printf("%-4d",arr[i][j]);
}
printf("\n");
}
}
int main()
{
MagicSquare();
return 0;
}
以上呢,就是解决偶阶魔方阵(四的倍数)的步骤及代码实现哦!