进入正题:众所周知,杨辉三角形(也称“帕斯卡三角形”,后同)长这样↓
即每一项等于左上方的数加右上方的数的和
学编程的人一般看作这样↓
即每一项等于左上方的数与上方的数之和。
写个简单的递推式。
#include<stdio.h> const int maxn=1e4+5; int f[maxn],n; int main(){ scanf("%d",&n);f[1][1]=1; for(int i=2;i<=n;i++) for(int j=1;j<=i;j++) f[i][j]=f[i-1][j-1]+f[i-1][j]; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) printf("%3d%c",f[i][j],j==i?'\n':' '); return 0; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
杨辉三角长啥样都知道了,那它与组合数有啥关系呢?
关系:C n m C^m_nCnm的值等于杨辉三角形第n行第m个数
递推公式:C n m = C n − 1 m − 1 + C n − 1 m C^m_n=C^{m-1}_{n-1}+C^{m}_{n-1}Cnm=Cn−1m−1+Cn−1m
关系可以由递推公式得到。
转载 原创: https://blog.csdn.net/weixin_36171392/article/details/102251204