求关于6X6 矩阵的魔方阵的算法? 我已经写出来 奇数魔方阵 和4X4系列的魔方阵 唯独 6X6 系列的魔方阵不清楚算法....
我写的 奇数魔方阵 代码 // 奇数魔方阵算法
#include<stdio.h>
#define N 5
int main(void)
{
int a[N+1][N+1]={0};
int i,j,key=1;
i=0;
j=(N+1)/2;
for(key=1;key<=25;key++) // 解法 第一个数字放在第一行第一列的正中央,然后向右(上)填,如果右上已有数字,则向下填...
{ if((key%N)==1) // 可判断 右上位置是否已经填上数字
i++;
else
{
i--;
j++;
}
if(i==0) // 如果是边界 则到第N行
i=N;
if(j>N) //如果是边界则到第1列
j=1;
a[i][j]=key;
}
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
return 0;
}
//4N系列魔方阵代码
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,j,s=0;
int a[4][4]={0};
printf("该4N矩阵为:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
s=s+1;
a[i][j]=s;
}
}
for(i=0;i<4;i++) // 显示输入的四行四列的矩阵
{
for(j=0;j<4;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
printf("\n");
printf("4N魔方阵为:\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if((i+1)%4==((j+1)%4)||((j+1)%4+(i+1)%4)==1) // 核心一步 判断该4x4矩阵的对角线
{
a[i][j]=17-a[i][j]; // 用该矩阵最大值 16 和最小值 1 之和 减去对角线上的值 就可得出魔方阵
}
}
}
for(i=0;i<4;i++) // 显示转换后的四行四列的魔方阵
{
for(j=0;j<4;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
6X6 的该怎么想算法...