神奇的幻方

神奇的幻方

真题传送门洛谷
暴力模拟注意不要越界‘

#include<bits/stdc++.h>
using namespace std;
int x,y,n,huan[44][44];
int main()
{
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
    cin>>n;
    if (n==1){
        cout<<1;
        return 0;
    }
    x=1,y=n/2+1;
    huan[x][y]=1;
    for (int i=2;i<=n*n;i++)
      {
        if (x==1&&y!=n) huan[n][y+1]=i,x=n,y=y+1;
        else if (x!=1&&y==n) huan[x-1][1]=i,x=x-1,y=1;
        else 
        if (x==1&&y==n) huan[x+1][y]=i,x+=1;
        else if (x!=1&&y!=n)
            if (!huan[x-1][y+1]) huan[x-1][y+1]=i,x-=1,y+=1;
            else  huan[x+1][y]=i,x+=1;
      }
    for (int i=1;i<=n;i++)
     {
         for (int j=1;j<=n;j++)
               printf("%d ",huan[i][j]);
           printf("\n");
     }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/beautiful_cxw/article/details/81185436