这个代码是c++的
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int ans[1005][1005];//记录答案
bool bj[1005][1005];//用来标记该点是否能走
signed main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++) bj[0][i]=bj[i][0]=bj[n+1][i]=bj[i][n+1]=1;//把周围标位不能走
int x=1,y=n,sum=1;//x,y分别表示当前的位置,sum表示这个位置的值
string fx="down";//记录该怎么走
while(sum<=n*n){
ans[x][y]=sum;//记录答案
bj[x][y]=1;//走过了,就不能再走
if(fx=="down"){//向下
x++;
if(bj[x][y]){//不能再走
x--;
y--;
fx="left";//换方向
}
}
else if(fx=="left"){//向左
y--;
if(bj[x][y]){//不能再走
y++;
x--;
fx="up";//换方向
}
}
else if(fx=="up"){//向上
x--;
if(bj[x][y]){//不能再走
y++;
x++;
fx="right";//换方向
}
}
else{//向右
y++;
if(bj[x][y]){//不能再走
y--;
x++;
fx="down";//换方向
}
}
sum++;
}
//输出答案
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) printf("%lld ",ans[i][j]);
puts("");//换行
}
return 0;
}