杨辉三角模板
来源:互联网 发布:自学唱歌的软件 编辑:程序博客网 时间:2024/05/19 14:53
杨辉三角的多种解法
一:二维数组
递推公式:f[1][1]=1 , f[i][j]=f[i-1][j-1]+f[i-1][j]
核心代码:
二:一维数组
思想:用一个一维数组把相邻两个数的和计算出来保存,到下一行时就输出。
代码:
分析: 其思路是用一维数组做,实际上用的是两个一维数组a[], b[].其中a[]是保存当前行各元素的值, 而b[]可以认为是一个临时数组, 它是a[]的一个备份, 也就是说在每行a[]元素置数完毕后,将a[]中的内容拷贝到b[]中,因为进行下一行的运算时, a[]会被重置, 而且由杨辉三角的规律知下一行要用到上一行的元素, 这样在计算下一行的a[]时就可以用保存在b[]中的上一行的元素了(咋感觉这么啰嗦呢^_^)。也正因为如此, 在每一行运算完之后,就要将其输出显示, 下一行时a[]就是新值了。所以用这种方法最后程序结束时并没有将三角中所有元素保存下来,只是在程序运行过程中将其输出。
再看其程序的核心部分: a[j] = b[j] + b[j-1]; 其开始定义了数组a[80],b[80],0号元素并未使用,即每一行的元素都是从a[1]开始的。但这个0号元素是不是真的没用呢?稍加分析可知当然否,而且感觉这个0号元素用的挺巧妙,比如说到第5行时(其实与第几行没关系),输出第一个元素的语句是 a[1]=b[1]+b[0], 由于b[1]为1, 这时0号元素就派上用场了,b[0]为0, 可以将每一行的第一个元素置为1, 往下走有第二个元素 a[2]=b[2]+b[1]; ...开始按杨辉三角的规律走。同理,到最后一个元素时,a[5]=b[5]+b[4],在上一行中只有4个元素,即此时b[]中只有4个有效元素,那这个b[5]算什么呢?其实它跟那个0号元素有相同的作用,因为初始化时数组中的所有元素都置为0,所以这时的b[5]为0,由b[4]为1可得a[5]为1。这样可以将每一行的最后一个元素置为1。对于各行,此法均适用,实际上就是在满足杨辉三角两侧值均为1的规律。
三:二项式定理:
公式:第n行第i个数表示为C(n-1,r) 注:C(n,m)=n!/[m!(n-m)!]
代码:四:递推公式法:
hdu4927。这个方法感觉跟二项式有点关系。
这个方法就直接贴代码啦。
- 杨辉三角模板
- 用C++队列模板实现杨辉三角的输出
- 杨辉三角/帕斯卡三角
- (尹成)杨辉三角(正三角 倒三角)
- 学习:杨辉三角(帕斯卡三角)
- 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角算法
- C# 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角程序
- 打印杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角
- 杨辉三角源代码
- [js高手之路]面向对象+设计模式+继承一步步改造简单的四则运算
- 0828数据仓库概念学习
- Spring集成MyBatis (使用mapper映射器)
- 设计模式之工厂模式
- 【002】基于Python的Flask Web应用框架(2)
- 杨辉三角模板
- Android日志系统第三方库------Logger 源码分析
- oracle-plsql练习
- 使用HttpUrlConnection的GET方式从网上下载数据
- bzoj3714 [PA2014]Kuglarz
- oracle游标的使用
- 八皇后-剪枝函数
- 【js基础】javascript中的apply() call() bind() 方法是javascript专业人员的基础[译]
- 《数据库系统概念(第六版)》读书笔记——第6章:高级SQL