n阶魔方
题目
n阶魔方 :将1~n^2个数填写到一个由n行n列的方阵中,使得每一行每一列及两个对角线上的数字之和分别等于同一个数。称这个方阵为一个n阶魔方
示例
当n=3时, 每行之和为15,如图
6 | 1 | 8 |
---|---|---|
7 | 5 | 3 |
2 | 9 | 4 |
分析
第一步:元素的位置记为(i,j),第一个元素为(0,n/2)
第二步:下一个元素(i1,j1)为(i,j)的左上角位置处,及(i1=i-1,j1 = j-1); 对于这个位置有两种情况:
- 若(i1,j1)有数字,则修改i1与j1的值i1=i+2,j1=j+1
- 若i1<0&&j1>=0时,修改i1=n-1;
若j1<0&&i1>=0.修改j1=n-1
代码
void MAGIC(int A[][MaxZise],int n){
int i,j,num;
// 初始化ÿ