40分求调
查看原帖
40分求调
915921
DougNo1楼主2024/9/8 17:07

代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int a[42][42],x[42],y[42];
int main(){
    int n,i,j;
    cin>>n;
    memset(a,0,sizeof(a));
    a[1][(n+1)/2]=1;
    x[1]=1;
    y[1]=(n+1)/2;
    for(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;
        }
        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;
        }
        if ((x[i-1]==1)&(y[i-1]==n)){
            a[x[i-1]+1][y[i-1]]=i;
            x[i]=x[i-1]+1;
            y[i]=y[i-1];
        }
        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(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
	return 0;
}

提交记录

帮我的必被我关注!

2024/9/8 17:07
加载中...