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

 更新时间:2018年05月19日 15:00:15   作者:大师兄  
这篇文章主要给大家介绍了关于Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

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

跳台阶

问题描述:

一只青蛙一次可以跳上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新手们容易犯的几个错误总结

    python语言里面有一些小的坑,特别容易弄混弄错,初学者若不注意的话,很容易坑进去,下面我给大家深入解析一些这几个坑,希望对初学者有所帮助,需要的朋友可以参考学习,下面来一起看看吧。
    2017-04-04
  • 解决python 文本过滤和清理问题

    解决python 文本过滤和清理问题

    文本过滤和清理所涵盖的范围非常广泛,涉及文本解析和数据处理方面的问题。这篇文章主要介绍了解决python 文本过滤和清理问题,需要的朋友可以参考下
    2019-08-08
  • python解析xml文件方式(解析、更新、写入)

    python解析xml文件方式(解析、更新、写入)

    这篇文章主要介绍了python解析xml文件方式(解析、更新、写入),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • linux系统使用python获取内存使用信息脚本分享

    linux系统使用python获取内存使用信息脚本分享

    这篇文章主要介绍了linux系统使用python获取内存使用情况信息,大家参考使用吧
    2014-01-01
  • Python Joblib库使用方法案例总结

    Python Joblib库使用方法案例总结

    Python Joblib库是一个用于并行计算和数据预处理的工具库。它可以帮助用户快速处理大量数据,提高计算效率。其中,最常用的功能是并行计算,可以使用多个CPU核心同时处理任务,大大缩短计算时间。此外,Joblib还提供了一些数据预处理的功能,可以帮助用户更好地处理数据
    2023-06-06
  • Python元组定义及集合的使用

    Python元组定义及集合的使用

    这篇文章主要介绍了Python元组定义及集合的使用,元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作
    2022-07-07
  • 从安装到应用全面掌握Python与OpenCV的配置与高级功能(最新推荐)

    从安装到应用全面掌握Python与OpenCV的配置与高级功能(最新推荐)

    OpenCV的强大功能不仅限于基本的图像处理,还可以扩展到实时视频分析、复杂的图像拼接和特征匹配等应用场景,这篇文章主要介绍了从安装到应用全面掌握Python与OpenCV的配置与高级功能,需要的朋友可以参考下
    2024-08-08
  • python matlab库简单用法讲解

    python matlab库简单用法讲解

    在本篇文章里小编给大家整理了一篇关于python matlab库简单用法讲解内容,有需要的朋友们可以学习下。
    2020-12-12
  • 如何使用Python设置和读取config.ini文件

    如何使用Python设置和读取config.ini文件

    使用配置文件是一种常见的方法,而INI文件是一种简单而常见的配置文件格式,在本文中,我将介绍如何使用Python设置和读取INI格式的配置文件,需要的朋友可以参考下
    2024-03-03
  • Python简单实现socket信息发送与监听功能示例

    Python简单实现socket信息发送与监听功能示例

    这篇文章主要介绍了Python简单实现socket信息发送与监听功能,结合实例形式分析了Python基于socket构建客户端与服务器端通信相关操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论