摘要:杨辉三角形,又称贾宪三角形帕斯卡三角形海亚姆三角形,是二项式系数在的一种写法,形似三角形,在中国首现于南宋杨辉的详解九章算术得名,书中杨辉说明是引自贾宪的释锁算术,故又名贾宪三角形。
杨辉三角形,又称贾宪三角形、帕斯卡三角形、海亚姆三角形,是二项式系数在的一种写法,形似三角形,在中国首现于南宋杨辉的《详解九章算术》得名,书中杨辉说明是引自贾宪的《释锁算术》,故又名贾宪三角形。
前9层写出来如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
首先给大家介绍一种最简单的求杨辉三角mn值的方法(m为行,n为列,比如(5,3)即为第五行第三个,值为6)即为递归法:
function recursion($m, $n) { if ($n == 1 || $n == $m || $m == 1) { return 1; } $val = recursion($m-1, $n - 1) + recursion($m-1, $n); return $val; }
这种方法实现最简单,但是如果mn的值特别大的话,性能会非常差,我试了个100,78,就把机器卡死了。。
迭代法迭代法从第一层开始循环,只循环每行中必要的列,最后求出mn位置的值。代码如下:
function setNum($row, $list) { $arr = array(); for ($i = 0; $i < $row; $i++) { $start = ($list - ($row - $i)) < 0 ? 0 : ($list - ($row - $i)); $end = ($list - 1) > $i ? $i : ($list - 1); for ($j = $start; $j <= $end; $j++) { if ($i == 0 || $i == 1 || $j == 0 || $i == $j) { $arr[$i][$j] = 1; } else { $arr[$i][$j] = $arr[$i - 1][$j] + $arr[$i - 1][$j - 1]; } } } return $arr[--$row][--$list]; }公式法
当然了,根据杨辉三角的性质:第n行的m个数可表示为 C(n-1,m-1),用排列组合的公式也可以获得mn的值,代码如下:
function express($m, $n) { $up = 1; for ($i = $m - 1; $i > ($m - $n); $i--) { $up *= $i; } $down = 1; for ($i = $n - 1; $i > 0; $i--) { $down *= $i; } return $up / $down; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22857.html
摘要:迭代法复杂度时间空间思路简单的按照杨辉三角形的规则计算就行了。代码加入第一个加入中间的数加入最后一个逆序相加法复杂度时间空间思路同样用迭代的方法,根据上一层的值算下一层,不过这里每一层都在同一个上操作。 Pascals Triangle I Given numRows, generate the first numRows of Pascals triangle. For examp...
摘要:杨辉三角杨辉定义如下把每一行看做一个,试写一个,不断输出下一行的复制一个,这样才不会影响到原有的。不然里的每个列表的末尾会为 杨辉三角杨辉 定义如下: 1 / 1 1 / / 1 2 1 / / / 1 3 3 1 / / / / 1 4 6 ...
摘要:简单做法打印空格请输入行数实现杨辉三角的算法效果杨辉三角形开方做法本源 简单做法#includeusing namespace std;#include#includevoid kongge(int n)//打印空格{ for (int i = 0; i < n; i++) { cout
摘要:假设有几个小朋友以相同间隔围成圆周,要结对用纸杯电话相互通话。如果绳子交叉,很有可能会缠绕起来,所以结对的原则是不能让绳子交叉。如下所示运行结果上一篇异或杨辉三角形下一篇禁止右转本系列总目录参见程序员的算法趣题详细分析和全解 目录 1. 问题描述 2. 解题分析 3. 代码及测试 1. 问...
阅读 773·2021-09-30 09:46
阅读 3780·2021-09-03 10:45
阅读 3610·2019-08-30 14:11
阅读 2545·2019-08-30 13:54
阅读 2258·2019-08-30 11:00
阅读 2350·2019-08-29 13:03
阅读 1557·2019-08-29 11:16
阅读 3583·2019-08-26 13:52