文档介绍:计算机实习实验报告
学院:电子工程学院
班级:2013211206
姓名:Ihh
学号:
一、 魔方阵
魔方阵按照阶数可以分为三类,即奇数阶幻方(劳 伯法)、双偶数阶幻方(海尔法)、单偶数阶幻方(斯 特拉兹法),三者结合使方;
label->setMinimumSize(55,0);
label->setAlignment(Qt::AlignCenter);
gridLayout->addWidget(label,i,j);
}
}
window->setLayout(gridLayout);
window->show();}
void MagicMatrix2(int m)
(
int a[m] [m];//存储魔方
int temparray[m*m/2];//存储取出的元素
int i;〃循环变量
int col, row;// col 列,row 行
〃初始化
i= 1;
for(row = 0;row < m; row++)
for(col = O;col < m; col ++)
a[row] [col] = i;
i++;
}
}
〃取出子方阵中对角线上的元素,且恰好按从 小到大的顺序排放
i = 0;
for(row = 0;row < m; row++)
(
for(col = 0;col < m; col ++)
(
if((col % 4 == row % 4) || ( 3 —
(col % 4 + row % 4)))
(
temparray [i] = a [row] [col];
i++;
〃将取出的元素按照从大到小的顺序填充到
nXn方阵中
i = m*m/2 -1;
for(row = O;row < m; row++)
(
for(col = O;col < m; col ++)
(
if((col % 4 == row % 4) || ( 3 —
(col % 4 + row % 4)))
(
a[row] [col] = temparray [i];
i--;
}
}
}
QString str[m*m];
int t=0;
for(int i=0;i<m;i++)
for(int j =0;j <m;j++)
(
str [t] =QString::number(a[i] [j]);
t++;
QWidget * window = new QWidget;
window->setWindowTitle("魔方阵");
window->resize(250, 200);
QGridLayout *gridLayout = new QGridLayout;
gridLayout->setSpacing(2);
gridLayout->setMargin(2);
for(int i=0; i <m;i++)
(
for(int j = 0; j < m;j++)
(
QLabel * label = new QLabel(str[i*m+j]);
label->setFrameStyle(QFrame::Panel + QFrame:: Sunken) label->setMinimumSize(55,0);
label->setAlignment(Qt::AlignCenter);
gridLayout->addWidget(label,i,j);}} window->setLayout(gridLay out);
window->show();}
void MagicMatrix3 (int m)
int** a;
a = (int**)malloc(m*sizeof(int*));
for(int index = O;index<m; index++ )
(
a [index]=(int*)malloc(m* sizeof(int));
}
int i,k,temp;
int col,row;// col 列,row 行
〃初始化
k = m / 2;
col = (k-l)/2;
row = 0;
a[row] [col] = 1;
〃生成奇魔方A
for(i = 2; i v= k*k; i++)
if((i-l)%k == 0 )〃前一个数是3的倍数 (row++;}
else
(// 迁row = 0, then row = N-l, or row = row - 1 row—;
row = (row+k)%k;
// if col = N, then col = 0, or col