原题链接:蓝桥杯算法提高VIP-Pascal三角
解题思路:
1、每个数等于它上方两数之和。
2、每行数字左右对称,由1开始逐渐变大。
3、第n行的数字有n项。
4、第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
5、第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
7、(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。
8、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。
9、将第n行的各数值,分别乘以10的列数m-1次方,然后把这些数值相加的和等于11的n-1次方。

注意事项:
参考代码:
#include<stdio.h>
int c(int x, int y) {
int z;
if (y == 1 || y == x)return 1;
z = c(x - 1, y - 1) + c(x - 1, y); //C(n+1,i)=C(n,i)+C(n,i-1)
return z;
}
int main() {
int n;
scanf("%d", &n);//输入行数
n += 1;
for (int i = 1; i <=n; i++) {
for (int i1 = i; i1 < n; i1++) //数字前面的空格,倒三角
printf(" ");
for (int j = 1; j <= i; j++)
printf("%3d ", c(i, j)); //输出数字时保留间隙
printf("\n");
}
return 0;
}0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复