給一個奇數階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年更多、更全、更新大廠面試資料,歡迎+群學習交流,個人簡介信息加群領取


分享到:


相關文章: