您的位置:首页 > 其它

螺旋矩阵

2017-07-02 10:16 190 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: