#include<iostream>
using namespace std;
int a[20][20];
int main() {
int n,k=1,direct=2;//direct:1向上 2向下 3向左 4向右
cin>>n;
int i=0,j=n-1;
while(k<=n*n) {
if(a[i][j]==0) {
a[i][j]=k;
k++;
}
if(direct == 1) { //向上
i--;//行减1
if(i==-1||a[i][j]!=0) {
direct=4;
i++;
j++;
}
} else if(direct == 2) { //向下
i++;//行加1
if(i==n||a[i][j]!=0) {
direct=3;
i--;
j--;
}
} else if(direct == 3) { //向左
j--;//列减1
if(j==-1||a[i][j]!=0) {
direct=1;
i--;
j++;
}
} else if(direct == 4) { //向右
j++;//列加1
if(j==n||a[i][j]!=0) {
direct=2;
i++;
j--;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
cout<<a[i][j] <<" ";
}
cout<<endl;
}
return 0;
}
觉得有用的话采纳一下哈