2019/09/20 01-杨辉三角解法

在这里插入图片描述
其实有两个解法,
1.按照以前的做法,你要算第几行,把这一行整个都算一遍
2.按照公式
先用普通的方式来解决
先当时写过的框架
在这里插入图片描述
把2带入进来看看在这里插入图片描述
把3带入进来,试试这边的在这里插入图片描述
这是最简单的思路在这里插入图片描述
评价一下,空间使用太多,如果使用100行那就每行都要计算
在这里插入图片描述
按照以前的解法可以不用这个东西
新旧两行来解决,一次性开辟新行
append如果在给它分配的内存满了,还要append需要挪动内存
新一行是旧一行得来的
新一行顶掉旧的一行得来的
在这里插入图片描述
到2的时候,要补充内层循环在这里插入图片描述在这里插入图片描述
效率比较差,是因为毕竟在反复开启内存,会产生大量gc

在这里插入图片描述
吧打印去掉,就跟我们刚才的数值一样在这里插入图片描述
%%timeit是ipython的东西在这里插入图片描述
跑了7圈,70w次,4.46微秒·在这里插入图片描述在这里插入图片描述
3.58微秒
在这里插入图片描述
看一下两种有什么时间上的差异
增加一下次数

在这里插入图片描述
在没有引起垃圾回收的时候,上面的算法没有下面算法好
append方式,在开辟好后的空间追加,效率还是比价低的,不如直接修改
在这里插入图片描述
在测算的时候尽量把io的去掉,print这种都是比较耗时的在这里插入图片描述
下面大上面小,算出来一定是分数,小数在这里插入图片描述
m个取n个,哪个是最大值,m是最大值
在这里插入图片描述
m-n小于m,n小于m
在这里插入图片描述在这里插入图片描述
算300的时候,没必要算三次,300阶乘已经包含了10的阶乘在这里插入图片描述从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。

*公 式C(n,m)=n!/((n-m)!m!)(m≤n)
性质C(n,m)= C(n,n-m)
性质C(n,m)=C(n-1,m-1)+C(n-1,m)

第三个方法
在这里插入图片描述
https://baike.baidu.com/item/杨辉三角/215098?fr=aladdin
在这里插入图片描述
一般有分母先把分母计算完再进行整除
r和d相等的情况下,只进来一次,,这样写是不行的dd
写了分支就意义不同,所以保留三个选项
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
用阶乘的方式就是,撑死弄了三个元素的列表,再内存不停的计算,空间复杂度是大O(1)的
只需要算阶乘就够
阶乘就是个简单的乘法

在这里插入图片描述
明显速度快在这里插入图片描述
阶乘算一遍就行了,组合数方式是最快的方式,但是其实主要是练习列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值