求一个n阶魔方阵的算法!希望能用标准c++的风格来做!
来源:百度知道 编辑:UC知道 时间:2024/05/13 12:02:06
#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