给一个奇数阶N幻方,填入数字1,2,3.N^N,使得橫竖斜方向上和都相同


给一个奇数阶N幻方,填入数字1,2,3.N^N,使得橫竖斜方向上和都相同

<code>#inc1ude<iostream>
#include<iomanip>
#include<cmath>
usingnamespace std;
int main()
{
int n;
cin>>n;
int i;
int **Matr = new int *[n]; //动态分配二维数组
for(i=0;iMatr[i]=new int[n]: //动态分配二维
数组
//j=n/2代表首行中间数作为起点,即1所在位置
int j=n/2,num=1: //初始值
i=0;
while(num!=n*n+1) {
//往右上角延升, 若超出则用%转移到左下角
Matr [(i%n+n)%n][(j%n+n)%n]=num;
//斜行的长度和n是相等的,超出则转至下一写信.
if (num%n==0) {
i++;
} else {
i--;
j++;
}
num++;
}
for (i=0;ifor (j=0;jcout << setw((int)log10(n*n)+4)<<matr>cout <<endl>}
}
for (i=0; idelete [] Matr[i];
}
return 1;
}
/<endl>/<matr>
/<cmath>/<iomanip>/<iostream>/<code>

2020年更多、更全、更新大厂面试资料,欢迎+群学习交流,个人简介信息加群领取


分享到:


相關文章: