对着题解一遍一遍看,找不出来错
#include<iostream>
using namespace std;
int main()
{
int N,x,y;
cin>>N;
int k=N*N,n[N+1][N+1] {0};
n[1][N/2+1]=1;
x=1;
y=N/2+1;
for (int i=2;i<=k;i++) {
if (x==1&&y!=N) {n[N][y+1]=i;x=N;y=y+1;continue;}
if (x!=1&&y==N) {n[x-1][1]=i;x=x-1;y=1;continue;}
if (x==1&&y==N) {n[x+1][1]=i;x++;y=1;continue;}
if (x!=1&&y!=N) {
if (n[x-1][y+1]==0) {n[x-1][y+1]=i;x--;y++;continue;}
else {n[x+1][y]=i;x++;continue;}
}
}
for (int i=1;i<=N;i++) {
for (int j=1;j<=N;j++) cout<<n[i][j];
if (i!=N) cout<<endl;
}
return 0;
}
以下是运行结果
输入
3
输出
016
750
802