题解 | 蛇形矩阵
蛇形矩阵
https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1
#include<stdio.h>
int main()
{
int arr[101][101];
int n;//这里的x代表几阶方阵,同时还会用给元素赋值
//printf("请输入一个数字:");
scanf("%d", &n);
arr[1][1] = 1;
int i = 1, j = 1, pos = 1;
for (int x = 2; x <= n * n; x++)
{
//这里开始分情况讨论
if( i==1 && j<n && pos==1)//pos代表移动方向pos==1是向左下走
//i=1,遇见上边界,向右走,还得不是第一行的最后一个元素
{
arr[1][++j] = x;
pos = -1;//改变方向
}
else if (j == 1 && i < n && pos == -1)
//遇见左边界时向下走一个第一列,向右上走
{
arr[++i][1] = x;
pos = 1;//改变方向,这里是向右上走
}
else if (i== n && pos == -1)//这里是遇见右边界也就是i=n的时候
{
arr[n][++j] = x;
pos = 1;
}
else if (j == n && pos == 1)//这里是遇见下边界,j=n的时候,向右上走
{
arr[++i][n] = x;
pos = -1;
}
///////ok,接下来就是其他情况了
else if (pos == 1)
{//向左下走
arr[--i][++j] = x;
}
else
{
arr[++i][--j] = x;
}
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
return 0;
}
深圳虾皮信息科技有限公司公司福利 829人发布
查看6道真题和解析