比赛 20190908之惊鸿 评测结果 AAAAAAAAAA
题目名称 神奇的幻方 最终得分 100
用户昵称 云卷云书 运行时间 0.006 s
代码语言 C++ 内存使用 13.66 MiB
提交时间 2019-09-18 20:57:32
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int a[40][40];
int main(){
	freopen("2015magic.in","r",stdin);
	freopen("2015magic.out","w",stdout);
    int n,x[1600],y[1600];
    scanf("%d",&n);
    for(int i=0;i<=n;i++){
        a[0][i]=260408,a[i][0]=260408;
    }
    a[1][n/2+1]=1;
    x[1]=1,y[1]=n/2+1;
    for(int i=2;i<=n*n;i++){
        if(x[i-1]==1&&y[i-1]!=n){
            a[n][y[i-1]+1]=i;
            x[i]=n,y[i]=y[i-1]+1;
        }
        else if(y[i-1]==n&&x[i-1]!=1){
            a[x[i-1]-1][1]=i;
            x[i]=x[i-1]-1,y[i]=1;
        }
        else if(a[1][n]==i-1){
            a[2][n]=i;
            x[i]=2,y[i]=n;
        }
        else if(x[i-1]!=1&&y[i-1]!=n){
            if(a[x[i-1]-1][y[i-1]+1]==0){
                a[x[i-1]-1][y[i-1]+1]=i;
                x[i]=x[i-1]-1,y[i]=y[i-1]+1;
            }
            else{
                a[x[i-1]+1][y[i-1]]=i;
                x[i]=x[i-1]+1,y[i]=y[i-1];
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
          for(int j=1;j<=n;j++){
            printf("%d ",a[i][j]);
        }
    printf("\n");
    }
    return 0;
}