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多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
python3 kmp 字符串匹配的方法
Jul 07 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
python 同时读取多个文件的例子
Jul 16 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
Python数据类型最全知识总结
May 31 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php ImageMagick windows下安装教程
2015/01/26 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
在Django中创建第一个静态视图
2015/07/15 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python numpy数组中的复制知识解析
2020/02/03 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Django数据库迁移常见使用方法
2020/11/12 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
毕业生就业自荐书
2013/12/15 职场文书
仓库管理制度
2014/01/21 职场文书
阿德的梦教学反思
2014/02/06 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
同居协议书范本
2014/04/23 职场文书
委托书如何写
2014/08/30 职场文书
第二次离婚起诉书
2015/05/18 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记