奇数阶魔方矩阵的生成算法如下:
第1步:将1放入第一行的正中处。
第2步:按照如下方法将第 i
个数( i
从 2 到 n×n )依次放到合适的位置上。如果第i-1
个数的右上角位置没有放数,则将第 i
个数放到前一个数的右上角位置。如果第 i-1
个数的右上角位置已经有数,则将第 i
个数放到第 i-1
个数的下一行且列数相同的位置,即放到前一个数的下一行。
注意,计算右上角位置的行列坐标时,可采用对 n
求余的方式来计算,即当右上角位置超过矩阵边界时,要把矩阵元素看成是首尾衔接的。
#include <stdio.h>
#define N 15
void InitializerMatrix(int x[][N], int n);
void PrintMatrix(int x[][N], int n);
void GenerateMagicSquare(int x[][N], int n);
int main(void)
{
//=======begin=======
//========end========
}
//函数功能:生成n阶幻方矩阵
void GenerateMagicSquare(int x[][N], int n)
{
//=======begin=======
//========end========
}
//函数功能:输出n阶幻方矩阵
void PrintMatrix(int x[][N], int n)
{
//=======begin=======
//========end========
}
//函数功能:初始化数组元素全为0,标志数组元素未被占用
void InitializerMatrix(int x[][N], int n)
{
//=======begin=======
//========end========
}