python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?
总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数
1、第一步如果是只走1步台阶,剩下的n-1步台阶怎么走(多少种走法)就只和n-1步台阶有关,f(n-1)
2、第一步如果是走2步台阶,剩下的n-2步台阶怎么走(多少种走法)就只和n-2步台阶有关,f(n-2)
3、第一步如果是只走3步,剩下的n-3步台阶怎么走(多少种走法)就只和n-3步台阶有关,f(n-3)
高中数学的排列:迈开步子的第一步有3种走法,再去算1、2、3种走法的总数加起来就是总的走法数。
第一步走1阶台阶,2阶台阶,3阶台阶,各是一种走法,1、2、3加起来就是走法的总数了
fn(n)=fn(n-1)+fn(n-2)+f(n-3) # 这种款式的表达式是不是类似斐波那契数列?
(斐波那契数列定义:0、1、1、2、3、5、8.。。。f(n)=f(n-1)+f(n-2)
假设总共3步台阶:1、1、1, 2、1, 3, 1、2总共四种走法
1-1-1
1-2
2-1
3
1、第一步走1步,走完所有台阶的走法,只与剩下的2步台阶有多少种走法有关了,fn(3)=fn(2),总共2中走法
2、第一步走2步,走完所有台阶的走法,只与剩下的1步台阶有多少种走法有关了,fn(3)=fn(1),总共1中走法
3、第一步走3步,走完所有台阶的走法,只与剩下的0步台阶有多少种走法有关了,fn(3)=fn(0),总共1种走法 。这里不要纠结fn(0)=1
fn(3)=2+1+1=4
所以这个等式成立不啊?!
fn(3)=fn(3-1)+fn(3-2)+f(3-3)
==>fn(3) = fn(2)+fn(1)+f(0)
==>fn(3) = fn(1)+fn(0)+fn(1)+fn(0)
这么理顺下来,就是归并排序用到的分而治之的思想,分到最细,1步阶梯只有1种走法,但因为递归运算要设置条件fn(0)=1,才能递归算下去
from functools import lru_cache #python函数工具包里的缓存模块
@lru_cache(1024)
def sum_stairs_recursion(sum):
"""
有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?
递归算法
不加缓存模块sum>100,一般电脑就很难算出来了,试了下n=30,i5四核跑了50秒
:param sum:传入楼梯数 int
:return: int
"""
if sum==0:
return 1
elif sum <0:
return 0
return sum_stairs_recursion(sum-1)+sum_stairs_recursion(sum-2)+sum_stairs_recursion(sum-3)
def sum_stairs_Fibo(sum):
"""
非递归算法,斐波那契数列
台阶数:1、2、3、4、5、6
走法数:1、2、4、7、13、24
:param sum:
:return:
"""
a,b,c = 1,2,4
while sum-1>0:
a,b,c = b,c,a+b+c
sum -= 1
return a
python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...相关推荐
- Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?
Python爬楼梯问题:有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法? 总共n步台阶(先假设n>3),f(n)表示n步台阶的走法总数 1.第一步如果是只走1步台阶,剩下的 ...
- n级阶梯,人一步只能上1~2级,求一共有几种走法?
B站上有这样一道题: 大厂算法很难!力扣经典算法解析,小白也能懂!_哔哩哔哩_bilibili数据结构和算法可以让程序员脱胎换骨,刷算法题可以帮助我们通过面试和笔试,找到梦寐以求的工作,进入一线大厂或 ...
- 字节算法题--N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
N阶台阶,每次走一步或两步,计算共有多少种走法,打印出每种走法. 一 走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步.2步或 ...
- 【面试题】N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
题目重述:有N阶台阶,每次可以走一步也可以走两步,计算共有多少种走法,并将每种走法打印出来. 以下解法主要利用了二叉树和递归的解题思路. public class StepCompute {priva ...
- python爬取虾米音乐_Python爬取620首虾米歌曲,揭秘五月天为什么狂吸粉?!
最近两天,我被朋友圈的五月天粉丝(五迷)疯狂刷屏,"五月天永远陪你到20岁""演唱会即视感",这些字眼让我恨不得马上奔到电影院打卡. 作为五迷,我是满怀激情地在 ...
- python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?
开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...
- python爬取手机微信_Python爬取微信好友
前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 itchat安装 对微信的控制可以使用itchat来实现,我们找到itc ...
- python爬取豆瓣书籍_python 爬取豆瓣书籍信息
继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...
- python开源代码百度盘_python爬取百度云网盘资源-源码
今天测试用了一下python爬取百度云网盘资源. 代码片段import urllib import urllib.request import webbrowser import re def yun ...
最新文章
- Matlab/Simulink ROS
- 印度交通部或禁止无人驾驶汽车进入本土市场
- python发明者叫什么-python发明人
- 如果我要...(??版)
- 谷歌浏览器32位安装包_谷歌浏览器发布紧急安全更新修复Blink内核中的任意代码执行漏洞...
- 关于标准输入输出流和string类
- sonarqube对接maven
- redis java 缓存服务器_java中对Redis的缓存进行操作
- 苹果“修复”系统过于流畅的BUG遭到制裁,被罚款近2亿!网友:罚少了!
- java静态链表_静态链表及其创建(C语言实现)
- C语言基础之--sizeof()运算符的使用以及注意
- Flex入门的好书——《Flex3 Cookbook 中文版》
- Neural Architecture Search(NAS)强化学习寻找最优网络、NASNet、MNASNet
- php pacs,PACS系统
- Kinect for Windows SDK v2.0 开发笔记 (七)语音识别(上)
- vue项目如何部署?history与hash模式部署时的区别
- python什么字体好看_python docx 中文字体设置的操作方法
- 如何高效设计游戏——游戏伤害公式的量身定做
- 解决非硬件问题导致的U盘总容量大幅减少
- 【文本展开收起】uniapp—实现文本的展开与收起功能
热门文章
- Android验证码倒计时实现方式总结
- x must be 1d
- 由皮鞋引起的Java娱乐中文版
- JSON Parse error:Unrecognized token xxx
- [Unity-25] Unity中让游戏对象消失或隐藏的几种方法
- Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。
- 【材料计算】分析第一原理的计算结果,包括能带、态密度等
- 侍魂胧月传说服务器维护,侍魂胧月传说手游7月15日停机维护更新预告
- Newstart HA进阶
- try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?