```cpp
#include<bits/stdc++.h>
using namespace std;
long long a[10][10];
int main(){
long long dx[4]={0,1,0,-1};
long long dy[4]={1,0,-1,0};
long long i,j,n,num,d;
cin>>n;
for(i=0;i<=n+1;i++){
for(j=0;j<=n+1;j++){
a[i][j]=-1;
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=0;
}
}
i=1;
j=1;
d=0;
for(num=1;num<=n*n;num++){
a[i][j]=num;
if(a[i+dx[d]][j+dy[d]]!=0){
d=(d+1)%4;
}
i+=dx[d];
j+=dy[d];
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout.width(3);
cout<<a[i][j];
}
cout<<"\n";
}
}
```
试试
~~sqlm~~
by E303 @ 2024-05-06 21:04:36
```cpp
while(y<n&&!a[x][y+1]){
y++;
a[x][y]=count;
count++;
}
```
这一段当y=1的时候,会直接到a[x][2]去吧,而且其它循环也到不了1吧。
还有输出记得%3d
还有楼主大大,我有可能会被盗号,看到我发恶意语言的时候记得私信
Thank you
by xzh_2013 @ 2024-05-06 21:21:11