杨辉三角和排列组合的关系
进入正题:众所周知,杨辉三角形(也称“帕斯卡三角形”,后同)长这样↓

即每一项等于左上方的数加右上方的数的和
学编程的人一般看作这样↓

即每一项等于左上方的数与上方的数之和。
写个简单的递推式。
#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

浙公网安备 33010602011771号