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 文件与目录操作
Dec 24 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
python编码最佳实践之总结
Feb 14 Python
简单实现python收发邮件功能
Jan 05 Python
python 实现敏感词过滤的方法
Jan 21 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python使用opencv resize图像不进行插值的操作
Jul 05 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
python随机打印成绩排名表
Jun 23 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
php 团购折扣计算公式
2011/11/24 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Python 列表的清空方式
2020/01/13 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
工作推荐信范文
2014/05/10 职场文书
公路绿化方案
2014/05/12 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
三人合伙协议书范本
2014/10/29 职场文书
倡议书作文
2015/01/19 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
python用字节处理文件实例讲解
2021/04/13 Python