全部评论 1

  • //结构体写法:虽说有点麻烦[:笑抽]
    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        int x,y;//所在行列
    };
    int main(){
    	node a[2010];
        int h[2010][2010]={0};
        int n;
        cin>>n;
        //下标从1开始
        a[1].x=1,a[1].y=n/2+1;
        h[1][n/2+1]=1;
        for(int i=2;i<=n*n;i++){
            if(a[i-1].x==1 && a[i-1].y!=n){
                a[i].x=n,a[i].y=a[i-1].y+1;
            }else if(a[i-1].y==n && a[i-1].x!=1){
                a[i].y=1,a[i].x=a[i-1].x-1;
            }else if(a[i-1].x==1 && a[i-1].y==n){
                a[i].x=a[i-1].x+1,a[i].y=a[i-1].y;
            }else if(a[i-1].x!=1 && a[i-1].y!=n){
                if(h[a[i-1].x-1][a[i-1].y+1]==0){
                    a[i].x=a[i-1].x-1,a[i].y=a[i-1].y+1;
                }else{
                    a[i].x=a[i-1].x+1,a[i].y=a[i-1].y;
                }
            }
            h[a[i].x][a[i].y]=i;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cout<<h[i][j]<<" ";
            }
            cout<<endl;
        }
    	return 0;
    }
    

    2025-07-08 来自 安徽

    0
首页