1 #include<bits/stdc++.h>
2 using namespace std;
3 int main(){
4 int n,m,i,j,border,a[25][25];
5 while(~scanf("%d",&n)){
6 memset(a,0,sizeof(a));m=1;//a数组清0
7 if(n%2){//奇数
8 for(int k=1;k<=(n+1)/2;++k){
9 i=j=k;border=n-k+1;
10 while(j<=border){a[i][j]=m++;j++;}
11 i++;j--;
12 while(i<=border){a[i][j]=m++;i++;}
13 }
14 for(int k=1;k<=n;++k)a[n][1]+=a[k][k];
15 for(int k=1;k<=n;k++){
16 for(int g=1;g<=n;++g){
17 if(a[k][g]==0)printf(" ");
18 else printf("%-4d",a[k][g]);
19 }
20 printf("\n");
21 }
22 }
23 else{//偶数
24 for(int k=1;k<=n/2;++k){
25 i=j=k;border=n-k+1;
26 while(i<=border){a[i][j]=m++;i++;}
27 i--;j++;
28 while(j<=border){a[i][j]=m++;j++;}
29 }
30 for(int k=1;k<=n;++k)a[1][n]+=a[k][k];
31 for(int g=1;g<=n;++g){
32 if(a[1][g]==0)printf(" ");
33 else{
34 if(g!=n)printf("%-4d",a[1][g]);
35 else printf("%d\n",a[1][g]);//n为偶数的时候右上角这个值后面不能有空格
36 }
37 }
38 for(int k=2;k<=n;k++){
39 for(int g=1;g<=k;++g)
40 printf("%-4d",a[k][g]);//其余每行最后一个数字+空格共占4位
41 printf("\n");
42 }
43 }
44 }
45 return 0;
46 }