代码:
#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;
}
帮我的必被我关注!