模拟不多说,直接贴代码。
#include<stdio.h>
#include<memory.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int N;
const int MAX_N=101;
int sq[MAX_N][MAX_N];
int ans;
int init()
{
scanf("%d",&N);
}
int work()
{
int x,y,t,c,r;
x=y=N/2+1;
t=1;
c=2;
while(1)
{
if (t>=N*N) return 0;
for (r=1;r<=c;y++,r++,t++)
sq[x][y]=t;
y--,t--;
for (r=1;r<=c;x--,r++,t++)
sq[x][y]=t;
x++,t--;
c++;
for (r=1;r<=c;y--,r++,t++)
sq[x][y]=t;
y++,t--;
for (r=1;r<=c;x++,r++,t++)
sq[x][y]=t;
x--,t--;
c++;
}
}
int put()
{
int i,j;
for (i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%d ",sq[i][j]);
printf("\n");
}
ans=0;
for (i=1;i<=N;i++)
ans+=sq[i][i];
for (i=1;i<=N;i++)
ans+=sq[i][N+1-i];
ans-=sq[N/2+1][N/2+1];
printf("%d",ans);
}
int main()
{
init();
work();
put();
return 0;
}