求一个n阶魔方阵的算法!希望能用标准c++的风格来做!

来源:百度知道 编辑:UC知道 时间:2024/05/13 12:02:06
求一个n阶魔方阵的算法!希望能用标准c++的风格来做!基本要求是可以是奇数的,如果有高手的话,也可以是做出偶数的!但希望能用数组来做!谢谢了啊!有点急!!!!一定要用c++来做,不要c的!!!!

#define sizem ((size / 2 - 1) / 2)
#define sizeh (size / 2)
#define sizesq (sizeh * sizeh)

void main()
{
int size = 0; //幻方大小
int x = 0, y = 0; //下一个数字所放的位置
int i, j; //循环变量
int st_i, st_x = 0, st_y = 0;
int currnum; //构造双偶数阶幻方填数的变量
int temp;

//-----输入幻方大小-------------------------------
while ((size < 1) || (size > 31) || (size == 2))
{
printf("size of magic square:");
scanf("%d", &size);
}

//-----建立二维动态数组---------------------------
int **a = new int *[size];
for (i=0; i<size; i++)
{
a[i] = new int [size];
}

if (size % 2 == 1)
{
//-----构造奇数阶(2n+1)幻方(连续摆数法)---
x = (size + 1) / 2 - 1; //第一个数字在第一行
y = 0; //的正中间位置

//-----开始填数-------------------------------
for (i=1; i<=size*size; i++)
{
a