0分求调
查看原帖
0分求调
740948
rb_tree楼主2024/10/14 22:53
#include<cstdio>
#include<algorithm>
using namespace std;
inline int read()
{
    int x=0,w=1;
    char ch=0;
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*w;
}
inline void write(int x) 
{
    if(x<0) 
    { 
        x=-x;
        putchar('-');
    }
    if(x>=10) write(x/10);
    putchar((x%10)^48);
}
int a[50][50];
int main()
{
    int n=read();
    const int n2=n*n;
    a[1][n+1>>1]=1;
    int k1i=1,k1j=n+1>>1;
    for(int i=2;i<=n2;i++)
    {
        bool vis=0;
        if(k1i==1&&k1j!=n&&!vis) a[n][++k1j]=i,k1i=n,vis=1;
        if(k1j==n&&k1i!=1&&!vis) a[--k1i][1]=i,k1j=1,vis=1;
        if(k1i==1&&k1j==n&&!vis) a[++k1i][k1j]=i,vis=1;
        if(!vis)
        {
            if(!a[k1i-1][k1j+1]) a[--k1i][++k1j]=i;
            if(!a[k1i+1][k1j]) a[++k1i][k1j]=i;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++) write(a[i][j]),putchar(' ');
        putchar('\n');
    }
    return 0;
}
2024/10/14 22:53
加载中...