奇数阶魔方阵算法:
1.将第一行中间一列赋值为数值1;
2.以此进行行数减1,列数加1;
3.如果行数的下一行小于0,则将行数设置为n-1;
4.如果列数的下一列大于阶数n,则将列数设置为0;
5,如果按照上述进行后该行列处有数,则将该数放到该列的下面一行。
一、基本实现代码如下: (没用到数据结构的知识,用了最基本的二维数组。)
int _tmain(int argc, _TCHAR* argv[])
{
int array[N][N] = { 0 };
int i = 0;
int j = N / 2;
array[i][j] = 1;
for (int a=2;a<=N*N;a++)
{
i = i - 1;
j = j + 1;
if ((i<0) && (j == N))
{
i = i + 2;
j = j - 1;
}
else
{
if (i < 0)
{
i = N - 1;
}
if (j > N - 1)
{
j = 0;
}
}
if (array[i][j] == 0)
{
array[i][j] = a;
}
else
{
i = i + 2;
j = j - 1;
array[i][j] = a;
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j&#