Run ID:130763

提交时间:2025-09-15 21:38:34

#include<iostream> using namespace std; int a[1001][1001]; int n; //上下左右边界 int l,r,t,b; int num = 1; int main(){ cin>>n; //左边界和上边界初始值为一 l = t = 1; //右边界和下边界初始值为n r = b = n; //开始填充螺旋数组,数组元素一共有n*n个 while(num <= n*n){ //向右,从左边界开始,到右边界结束, for(int j = l;j <= r;j++){ //t为上边界,正要填充的这一行 a[t][j] = num++; } //每一次向右填充,上面会多一行,上边界要下移 t++; //紧接着向下填充 for(int i = t;i<=b;i++){ //r为右边界,正要填充的这一列 a[i][r] = num++; } //每一次向下填充,右边会多一列,右边界要左移 r--; //接着向左填充 for(int j = r;j>=l;j--){ //b为下边界,正要填充的这一行 a[b][j] = num++; } //会使得下面多一行,下边界要上移 b--; //接着向上填充 for(int i=b;i>=t;i--){ //l为左边界,正要填充的这一行 a[i][l]=num++; } //会使得左边多一列,左边界要右移 l++; } for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ printf("%4d",a[i][j]); } printf("\n"); } return 0; }