【算法竞赛】杨辉三角 | 杨辉三角与组合数的关系 | 杨辉三角的算法应用 | c++代码实现公式获取杨辉三角位置的值
杨辉三角详解
杨辉三角是什么?
杨慧三角是二项式系数在三角形中的一种集合排列!!
换一种说法: 杨辉三角是二项式系数, 通过数据三角形表示, 发现的数学规律.
杨辉三角与二项式系数联系
定义: 在数学里, 二项式系数, 或组合数, 是定义为形如(1+x)n(1 + x)^n(1+x)n展开后x的系数(其中n为自然数, k为整数)
那么一般二项式(x+y)n(x + y)^n(x+y)n 的幂可用二项式系数记为CnrC^r_nCnr
通常来讲,二项式系数代表的是从n件物品中,无序地选取k件的方法总数.
证明二项式系数与组合数之间的联系:
假设n = 4, k = 2. 通过组合数公式可以得到组合数为 6.
假如我们把(1+x)4(1 + x)^4(1+x)4 展开并标记每一个x, 就会得到:
(1+x1)(1+x2)(1+x3)(1+x4)(1+x_1)(1+x_2)(1+x_3)(1+x_4)(1+x1)(1+x2)(1+x3)(1+x4)
上式等于:
(1+x1)⋯(1+x4)=⋯+x1x2+x1x3+x1x4+x2x3+x2x4+x3x4+⋯(1+x_1)⋯(1+x_4)=⋯+x_1x_2+x_1x_3+x_1x_4+x_2x_3+x_2x_4+x_3x_4+⋯(1+x1)⋯(1+x4)=⋯+x1x2+x1x3+x1x4+x2x3+x2x4+x3x4+⋯
假如把标记去掉, 那么x2x^2x2的系数正好是等于6, 与C42C_4^2C42相符合
也就证明了:(1+x)n(1+x)^n(1+x)n中xkx^kxk的系数正好等于从n个元素中选取k个元素的组合数(CnkC^k_nCnk).
杨辉三角代码实现的递推公式
C[i][j]=C[i−1][j]+C[i−1][j−1];C[i][j]=C[i−1][j]+C[i−1][j−1];C[i][j]=C[i−1][j]+C[i−1][j−1];
11 11 2 11 3 3 11 4 6 4 1
递推:
#include<bits/stdc++.h>
using namespace std;
map<int, map<int, int> >mp;
int main()
{mp[0][0] = 1;//输入一个row, col表示待查找的行和列, 输出其对应杨辉三角的值int row, col; cin >> row >> col;for(int i = 1;i <= row; i++)for(int j = 1;j <= i; j++){mp[i][j]=mp[i - 1][j] + mp[i - 1][j - 1];if(i == row && j == col){ cout << mp[i][j]; return 0; }}return 0;
}
组合数公式:
Cnm=Anmm!=n!m!(n−m)!C^m_n=\frac{A^m_n}{m!}=\frac{n!}{m!(n−m)!}Cnm=m!Anm=m!(n−m)!n!
#include<bits/stdc++.h>
using namespace std;
//求阶乘
int fun1(int num){int ans = 1;for(int i = 1;i <= num; i++){ans *= i;}return ans;
}
// 求组合数
int fun2(int a, int b){return fun1(a) / (fun1(a) * fun1(a - b));
}
int main()
{int row, col;cin >> row >> col;cout << fun2(row - 1, col - 1);
}
【算法竞赛】杨辉三角 | 杨辉三角与组合数的关系 | 杨辉三角的算法应用 | c++代码实现公式获取杨辉三角位置的值相关推荐
- 【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M+下载
[2023 年第三届长三角高校数学建模竞赛]B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M+下载 相关链接 [2023 年第三届长三角高校数学建模竞赛]B 题 长三角新能源 ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)
算法竞赛入门[码蹄集进阶塔335题](MT2026-2050) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2026-2050) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
- 《算法竞赛进阶指南》数论篇
<算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2001-2025)
算法竞赛入门[码蹄集进阶塔335题](MT2001-2025) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2001-2025) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2076-2100)
算法竞赛入门[码蹄集进阶塔335题](MT2076-2100) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2076-2100) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
- CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)
算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2051-2075)
算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)
算法竞赛入门[码蹄集进阶塔335题](MT2291-2295) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2291-2295) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2321-2325)
算法竞赛入门[码蹄集进阶塔335题](MT2321-2325) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2321-2325) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
最新文章
- Python --深入浅出Apriori关联分析算法(二) Apriori关联规则实战
- ubuntu安装redis的方法以及PHP安装redis扩展、CI框架sess使用redis的方法
- vue-cli + lib-flexible + px2rem实现px自动转化为rem
- go:系统参数or函数--未完
- make sure the Graphviz executables are on your systems‘ PATH
- Matlab与线性代数
- ie下的透明度,用滤镜filter:alpha
- emlog链接html,emlog如何做站内外链跳转优化教程
- 三菱驱动器参数表_三菱 M 参数表
- unity材质丢失素材变成粉红色的解决方法
- 有定位的含有 input的弹框,在有些手机光标乱跳
- app瘦身值图片压缩
- 中西方对时间的差异_中西方时间表达的认知差异
- (二)如何使用Progress Bar
- ASP.NET Core 认证与授权[3]:OAuth OpenID Connect认证
- 关于DPABI头动参数问题
- FlexboxLayout全攻略(Google官方灵活实现流式布局控件)
- Zego SDK深度适配安卓机型,实现超低延迟耳返
- 2022年湖南省高职单招(职业倾向性)考试冲刺练习及答案
- 【翻译】和麻美学姐一起的世界树(マミさんと世界樹スレ)第三话