<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]: //動態分配二維 /<cmath>/<iomanip>/<iostream>/<code>
數組
//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;j cout << setw((int)log10(n*n)+4)<<matr>cout <<endl>}
}
for (i=0; idelete [] Matr[i]; /<endl>/<matr>
}
return 1;
}
2020年更多、更全、更新大廠面試資料,歡迎+群學習交流,個人簡介信息加群領取
閱讀更多 lee哥說架構 的文章