谁有求偶数阶魔方阵的算法?
											魔方阵:每一行、每一列和对角线之和都相同的方阵,n阶魔方阵的元素集为1~n*n如:8 1 6
3 5 7
4 9 2
现在奇数阶的魔方阵已经有了固定的算法,可是偶数阶不知怎么做,哪位线性代数好的提供点思路?
用了半个小时才把这个写出来,只能输出奇数阶魔方阵的一种形式,不知道每阶魔方阵是不是都可以等价为一种?
源程序如下,宏定义N是阶数:
#include "stdio.h"
#define N 7
main()
{
    int col[N][N],row[N][N];
    int i,j;
    /*求行矩阵*/
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            col[i][j]=(-1)*i+j+(N+1)/2;
            if(col[i][j]>N)
            col[i][j]-=N;
            if(col[i][j]<1)
            col[i][j]+=N;
        }
    }
    /*求列矩阵*/
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            row[i][j]=col[i][N-j-1];
        }
    }
    /*由行矩阵、列矩阵和自然矩阵计算魔方阵*/
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            printf("%5d",(col[i][j]-1)*N+row[i][j]);
        }
        printf("\n");
    }
}