原题链接:蛇行矩阵
这种题目往往都是找出各个元素之间的规律。
1 我们可以发现,每一行的首元素之间的规律为:
a(n) = a(n - 1) + n - 1;
a(1) = 1;
这个结论很容易就用一个for循环实现。
2 再找出每一行元素之间的规律:
当输入的正整数为N时,第rows行将要输出 N-rows+1 个元素,而每行首元素和首元素下一个元素之间的增量inc为 rows+1,往后元素之间增量加1。
知道上面的规律之后就可以写程序了,参考代码如下:
#include <stdio.h> //N为总行数,rows为第几行,打印该行数据 void printN(int N, int rows) { //确定第rows行的第一个元素的值:a(n) = a(n-1) + n - 1; a1 = 1; int first = 1; int i; for (i = 1; i <= rows; i++) { first += i - 1; } //第rows行的第一个元素为first int tmp = first; //第rows行的元素之间的增量inc从rows+1开始 int inc = rows + 1; for (i = 1; i <= N - rows + 1; i++) //输出第rows行的元素,共有N-rows+1个 { //输出元素时,该行最后一个元素后面没有空格符 if (i < (N - rows + 1)) printf("%d ", tmp); else printf("%d", tmp); tmp += inc; //每一个元素都是前一个元素加上inc inc++; //inc++ } } int main() { int N; scanf("%d", &N); //输出N行数据 int i; for (i = 1; i <= N; i++) { printN(N, i); printf("\n"); } return 0; }
0.0分
40 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复