原题链接:蛇行矩阵
解题思路以及注意事项:
用while循环判断用户输入。
外层循环执行一次,就会排好一行,里层循环执行一次,会排好第i行的第j+1个数。
第i行第j个数比第j+1个数小j+i+2。
第i行第j个数比第i+1行第j个数小i+1。
运行 i=0 1 3 6 10 15 虽说是第1行,但在代码里面是i表示行,在数组里面i从0开始,第一行为i=0
i=1 2 5 9 14
i=2 4 8 13
i=3 7 12
i=4 11
方便大家对着看规律
实例代码:
#include<stdio.h> int main() { int N,i,j,a[100][100]; while(scanf("%d",&N)!=EOF) { a[0][0]=1; printf("%d",a[0][0]); for(i=0;i<N-1;i++) { a[i+1][0]=a[i][0]+i+1;//按规律排好第二行的第一个数,第二行的第一个数比第一行的第一个数大 第一行(i=0)+1 for(j=0;j<N-i-1;j++) //接上文:为下面的做准备,注意i从0开始, { a[i][j+1]=a[i][j]+j+i+2; //第一行第j+1个数比第j个数大j+第一行(i=0)+2。其中j也是从0开始 printf(" %d",a[i][j+1]); } //到这里其实就排好了第1行和第二行的第一个数 printf("\n%d",a[i+1][0]); //换行 } } printf("\n"); return 0; }
看看大家还有什么不懂的,请在下方评论区留言
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复