一道比较简单的模拟题
加油^_^
#include<bits/stdc++.h>
using namespace std;
const int N=50;
int n;
int ans[N][N];
int main()
{
scanf("%d",&n);
int lastx=1;//记录上一个点的横坐标
int lasty=(n/2)+1;//记录上一个点的纵坐标
ans[lastx][lasty]=1;
for(int i=2;i<=n*n;i++)
{
if(lastx==1&&lasty!=n)
{
lastx=n;
lasty=lasty+1;
}
else if(lasty==n&&lastx!=1)
{
lastx=lastx-1;
lasty=1;
}
else if(lastx==1&&lasty==n)
{
lastx=lastx+1;
}
else if(lastx!=1&&lasty!=n)
{
if(!ans[lastx-1][lasty+1]) lastx--,lasty++;
else lastx++;
}
ans[lastx][lasty]=i;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%d ",ans[i][j]);
}
puts("");
}
return 0;
}