题解 | #蛇形矩阵#

蛇形矩阵

http://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1

思路 用循环和判断进行分析,可以得出数组的变化方向 最后调用函数

#include<stdio.h> int main() { int n; scanf("%d",&n); int arr[1001][1001]={0}; arr[0][0]=1; int count=2; int pos=1;//1表示右上,-1表示左下 int i=0,j=0;//i表示行,j表示列 while(count<=n*n) { //先判定四种情况 if(i==0&&j<n-1&&pos==1)//上边界,行不变,列增加 { arr[i][++j]=count++; pos=-1;//改变方向 } else if(i<n-1&&j==0&&pos==-1)//左边界,行增加,列不变 { arr[++i][j]=count++; pos=1; } else if(i<n-1&&j==n-1&&pos==1)//右边界,行增加,列不变 { arr[++i][j]=count++; pos=-1; } else if(i==n-1&&j<n-1&&pos==-1)//下边界,行不变,列增加 { arr[i][++j]=count++; pos=1; } else if(pos==1)//右上 { arr[--i][++j]=count++; } else if(pos==-1)//左下 { arr[++i][--j]=count++; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; }

全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务