1 #include <iostream> 2 using namespace std; 3 int a[100][100]={0}; 4 int main() 5 { 6 7 int n,x,y,t=1; 8 cin>>n; 9 memset(a,0,sizeof(a)); 10 x=0; 11 y=n-1; 12 a[x][y]=1; 13 while(t<n*n) 14 { 15 while(x+1<n&&!a[x+1][y]) 16 a[++x][y]=++t; 17 while(y-1>=0&&!a[x][y-1]) 18 a[x][--y]=++t; 19 while(x-1>=0&&!a[x-1][y]) 20 a[--x][y]=++t; 21 while(y+1<n&&!a[x][y+1]) 22 a[x][++y]=++t; 23 } 24 for(int i=0;i<n;i++) 25 { 26 cout<<endl; 27 for(int j=0;j<n;j++) 28 cout<<a[i][j]<<" "; 29 } 30 cout<<endl; 31 return 0; 32 } 33 34 /*while循环主要用来判断是否可以继续前进(这里的前进是指相对于某一个点,其实际的前进方向); 35 可以继续前进必须满足两个条件,没有超出矩阵的范围,前进的方向没有被填入数字 36 */
参考来源:https://blog.csdn.net/Liuchang54/article/details/44838513