何为魔方阵
在n*n的矩阵中填入1到n^2的数字(n为奇数),使得每一行、每一列每条对角线的累加和都相等,这样的矩阵称为魔方阵。
例如:3阶魔方阵
三 | 阶 | 魔方阵 |
---|---|---|
6 | 1 | 8 |
7 | 5 | 3 |
2 | 9 | 4 |
魔方阵的实现
解决魔方阵问题的方法很多,本文采用如下规则产生魔方阵:
1. 由1开始填数,将1放在第0行的中间位置。
2. 将魔方想想成上下左右相接,每次王左上角走一步,会有下列情况:
由1开始填数,将1放在第0行的中间位置
- 左上角超出上方边界,则在最下边相对应的位置填入下一个数字;
- 左上角超出左边边界,则在最右边相对应的位置填入下一个数字;
- 如果按上述方法找的的位置已经填入数据,则在同一列下一行填入下一个数字。
C++代码
显然,处理对象为矩阵,我们的数据结构采用多维线性数组。
void square(int a[][],int n){