分成奇数斜列和偶数斜列,分别找规律然后遍历赋值
由5*5的斜向蛇形数组可以发现,
第一个斜列:1
第二个斜列:2 ->3
第三个斜列:4 -> 5 -> 6
第四个斜列:7 -> 8 -> 9 -> 10
第五个斜列:11 -> 12 -> 13 -> 14 -> 15
第六个斜列:16 -> 17 -> 18 -> 19
第七个斜列:20 -> 21 -> 22
第八个斜列:23 -> 24
第九个斜列:25
我们先根据数子增加的规律找出坐标变化的规律
#include<stdio.h>
#include<string.h>
int main()
{
int N;
printf("请输入二维数组的大小N:\n");
scanf("%d",&N);
int List[N][N];
bzero(List,N*N*sizeof(int));
int X = 1;
int m,n;
for(int i = 0;i < N;++i)
{
if(i % 2 ==0)
{
m = 0;
n = i;
for(int j = 0;j < (i+1); ++j)
{
List[m++][n--]=X++;
}
}
else
{
m = i;
n = 0;
for(int j = 0;j < (i+1); ++j)
{
List[m--][n++]=X++;
}
}
}
for(int i = 1;i < N;++i)
{
if(i % 2 ==0)
{
m = i;
n = N-1;
for(int j = 0;j <(N-i); ++j)
{
List[m++][n--]=X++;
}
}
else
{
m = N-1;
n = i;
for(int j = 0;j < (N-i); ++j)
{
List[m--][n++]=X++;
}
}
}
for(int i = 0;i < N;++i)
{
for(int j = 0;j < N;++j)
{
printf("%4d ",List[i][j]);
}
printf("\n");
}
return 0;
}