#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 50;
int a[MAXN][MAXN]={0};
int main()
{
freopen("magic.in ","r",stdin);
freopen("magic.out","w",stdout);
int n;
scanf("%d",&n);
int t=1;int i=1,j=(n+1)/2;
a[i][j]=t++;
while(t<=n*n)
{
if(i==1&&j!=n)
{
i=n;j=j+1;
a[i][j]=t++;
}
if(i!=1&&j==n)
{
i=i-1;j=1;
a[i][j]=t++;
}
if(i==1&&j==n)
{
i++;j=j;
a[i][j]=t++;
}
if(i!=1&&j!=n)
{
if(a[i-1][j+1]==0)
{
i=i-1;j=j+1;
a[i][j]=t++;
}
else
{
i++;j=j;
a[i][j]=t++;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
哭了
#include <algorithm>
using namespace std;
const int MAXN = 50;
int a[MAXN][MAXN]={0};
int main()
{
freopen("magic.in ","r",stdin);
freopen("magic.out","w",stdout);
int n;
scanf("%d",&n);
int t=1;int i=1,j=(n+1)/2;
a[i][j]=t++;
while(t<=n*n)
{
if(i==1&&j!=n)
{
i=n;j=j+1;
a[i][j]=t++;
}
if(i!=1&&j==n)
{
i=i-1;j=1;
a[i][j]=t++;
}
if(i==1&&j==n)
{
i++;j=j;
a[i][j]=t++;
}
if(i!=1&&j!=n)
{
if(a[i-1][j+1]==0)
{
i=i-1;j=j+1;
a[i][j]=t++;
}
else
{
i++;j=j;
a[i][j]=t++;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
哭了