Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法


Posted in Python onMay 19, 2018

前言

跳台阶、变态跳台阶、矩形覆盖其实都和斐波那契数列是一类问题,文中通过示例代码介绍的非常详细,下面话不多说了,来一起看看详细的介绍吧。

跳台阶

问题描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:

初始值很容易得到,当n > 2时,跳上n级台阶最后一步无外乎两种情况,从第n-1级跳一级跳上来,或是从第n-2级跳2级跳上来,因此很容易得到如下递归公式。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代码:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

变态跳台阶

问题描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:

相比上一个跳台阶,这次可以从任意台阶跳上第n级台阶,也可以直接跳上第n级。因此其递归公式为各个台阶之和再加上直接跳上去的一种情况。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)+ … + F(2)+ F(1)+ 1 = 2 **(n-1)

代码:

def jump_floor(number):
 if number == 0:
  return 0
 return 2**(number-1)

矩形覆盖

问题描述:

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

分析:

仔细分析这个问题实际上就是普通的跳台阶问题。

F(0)= 0
F(1)= 1
F(2)= 2
F(n)= F(n-1)+ F(n-2)(n > 2)

代码:

def jump_floor(number):
 if number <= 2:
  return number
 prev, curr = 1, 2
 for _ in range(3, number+1):
  prev, curr = curr, prev+curr
 return curr

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
Python发送email的3种方法
Apr 28 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python网络爬虫出现乱码问题的解决方法
Jan 05 Python
python并发2之使用asyncio处理并发
Dec 21 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
基于python log取对数详解
Jun 08 Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
python将unicode和str互相转化的实现
May 11 Python
Python利用公共键如何对字典列表进行排序详解
May 19 #Python
Python中一些不为人知的基础技巧总结
May 19 #Python
Python + selenium自动化环境搭建的完整步骤
May 19 #Python
pandas中去除指定字符的实例
May 18 #Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 #Python
对pandas replace函数的使用方法小结
May 18 #Python
基于DataFrame筛选数据与loc的用法详解
May 18 #Python
You might like
配置php网页显示各种语法错误
2013/09/23 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
js类型检查实现代码
2010/10/29 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
ECMAScript6--解构
2017/03/30 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
python 制作磁力搜索工具
2021/03/04 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
餐厅总厨求职信
2014/03/04 职场文书
勾股定理课后反思
2014/04/26 职场文书
汽车广告策划方案
2014/05/31 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
银行授权委托书样本
2014/10/13 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby