蛇形矩阵
a,b为提前算出下一次的坐标x,y,如果越界就改变方向用xaxis【】和yaxis【】
很妙,数组依次为上右下左方向
3 3为例
9赋值后,方向向右,右边已经赋值,故方向开始向下,向9的下边赋值,此时
当i>n*m=9时就不能为坐标赋值了停止循环
#include<stdio.h>
int main()
{
int n=0,m=0;
int s[110][110];
scanf("%d %d",&n,&m);
int x=0,y=0,a=0,b=0;
int xaixs[]={-1,0,1,0};
int yaixs[]={0,1,0,-1};
int d=1;
for(int i=1;i<=m*n;i++)
{
s[x][y]=i;
a=x+xaixs[d];
b=y+yaixs[d];
if(a<0||a>=n||b<0||b>=m||s[a][b])
{
d=(d+1)%4;
a=x+xaixs[d];
b=y+yaixs[d];
}
x=a;
y=b;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
printf("%d ",s[i][j]);
}
printf("\n");
}
return 0;
}
