#include<stdio.h>
#define SIZE 10
int main()
{
int a[SIZE][SIZE]={0};
int N;
scanf("%d",&N);
//每条边的下标在x,y上的增量
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int x=0,y=0,nx,ny,i,k=0; //k用来表示边,k=0,1,2,3 分别代表上,右,下,左
for(i=0;i<N*N;i++)
{
a[x][y]=i+1;
nx=x+dx[k]; //下一个坐标的位置
ny=y+dy[k];
if(nx<0 || nx==N || ny<0 || ny==N || a[nx][ny]!=0) //下标越界或下标上已经赋值,转变方向
{
k=(k+1)%4;
nx=x+dx[k];
ny=y+dy[k];
}
x=nx;
y=ny;
}
int j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
螺旋矩阵
最新推荐文章于 2022-03-13 18:38:50 发布