`
蒙面考拉
  • 浏览: 160277 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

跳台阶问题(12)【本质】

 
阅读更多

题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。

分析:这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。

首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。

现在我们再来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2)

我们把上面的分析用一个公式总结如下:

        /  1                          n=1
f(n)=      2                          n=2
        \  f(n-1)+(f-2)               n>2

分析到这里,相信很多人都能看出这就是我们熟悉的Fibonacci序列,在11里面有讲。

分享到:
评论

相关推荐

    青蛙为什么要跳台阶?C语言趣解青蛙跳台阶问题.pdf

    青蛙跳台阶问题是典型的动态规划问题,它涉及的是计数问题。在C语言领域,此问题常用于演示如何通过递归及动态规划的方法来求解。 1. 青蛙跳台阶问题基础: - 在基础版本的青蛙跳台阶问题中,青蛙每次可以跳上1级...

    青蛙跳台阶问题1

    青蛙跳台阶问题是一个经典的动态规划问题,也与斐波那契数列有一定的联系。在这个问题中,我们假设一只青蛙要跳上一个具有 n 级台阶的楼梯,每次它可以跳 1 级或者 2 级。我们需要找出到达最高台阶的所有不同跳法的...

    html5实现经典的变色弹珠跳台阶游戏源码

    html5实现经典的变色弹珠跳台阶游戏源码 html5实现经典的变色弹珠跳台阶游戏源码

    变色弹球跳台阶HTML5源码

    在这款游戏中,用户通过控制弹球跳跃,避开障碍物,每跳上一个台阶,弹球的颜色会发生变化,增加了游戏的趣味性和挑战性。游戏的核心机制包括以下几个方面: 1. **HTML5 Canvas**:Canvas是一个二维绘图上下文,...

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

    这篇文章主要介绍了在Python语言中解决三个经典的递归问题:跳台阶问题、变态跳台阶问题以及矩形覆盖问题。这三个问题虽然描述不同,但实际上都可以归结为斐波那契数列的变种。通过示例代码的形式,作者详细地介绍了...

    vfmh#JAVA2020#面试题10- II. 青蛙跳台阶问题1

    面试题10- II. 青蛙跳台阶问题题目链接面试题10- II. 青蛙跳台阶问题题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。示例 1:输入:n =

    HTML5变色弹球跳台阶小游戏.zip

    在这个“HTML5变色弹球跳台阶小游戏”中,我们看到的是HTML5与JavaScript(JS)相结合的一个典型应用,特别是标签中的"JS特效-其它代码"暗示了这个游戏主要依赖于JavaScript来实现各种动态效果。 首先,游戏的核心...

    jQuery变色弹珠跳台阶小游戏代码.zip

    【jQuery变色弹珠跳台阶小游戏代码.zip】是一款基于JavaScript库jQuery实现的趣味互动小游戏。游戏的核心在于通过用户点击台阶,使台阶颜色在红色、黄色和紫色之间切换,同时一个虚拟的弹珠会根据用户的点击顺序跳跃...

    使用C++递归求解跳台阶问题

    跳台阶问题是一个经典的计算机科学问题,它涉及到递归算法的运用。在本问题中,一个楼梯有 n 级台阶,每次跳跃可以跳 1 级或 2 级。目标是找出到达顶层有多少种不同的跳法。这个问题可以通过数学分析和递归算法来...

    c语言 跳台阶问题的解决方法

    跳台阶问题是一个经典的动态规划和递归问题,在C语言中可以通过循环或递归的方式来解决。这个问题的基本设定是:有一个含有n级台阶的楼梯,每次可以跳1级或2级,求解到达顶部的不同跳法数量。 首先,我们可以观察到...

    php中青蛙跳台阶的问题解决方法

    问题的背景是有一只青蛙,它能一次跳1级或2级台阶,问跳上n级台阶有多少种跳法。这个问题与著名的斐波那契数列(Fibonacci sequence)紧密相关。 首先,我们来分析这个问题的规律。当台阶数n为1时,只有一种跳法;...

    青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?

    青蛙上台阶所有解 兔子繁殖问题 斐波那契数列

    【算法题】青蛙跳台阶问题(附过程取模证明)

    青蛙跳台阶问题是一个经典的动态规划问题,也与斐波那契数列有一定的联系。这个问题描述的是,一只青蛙要跳上一个包含 n 级台阶的楼梯,每次它可以跳1级或者2级。我们需要找出到达第 n 级台阶的所有可能跳法的数量,...

    rrain7#nothing#面试题10- II. 青蛙跳台阶问题1

    一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。链接:

    linxid#Leetcode_Python#面试题10- II. 青蛙跳台阶问题1

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21解析1:本质是DP,对DP进行了拆

    stronglxp#learnNote#剑指Offer10-II.青蛙跳台阶问题1

    定义dp[i]表示跳上一个i级台阶的跳法数,则dp[0] = dp[1] = 1,对于任意i(i >=2),跳上i级台阶可以通过跳1级或者跳2级到达,所以dp

    利用简洁的C语言代码解决跳台阶问题与约瑟夫环问题

    跳台阶问题和约瑟夫环问题都是经典的计算机科学算法题目,常常出现在编程竞赛或面试中。下面我们将分别探讨这两个问题的解决方案以及它们的C语言实现。 **跳台阶问题**: 这是一个典型的动态规划或递归问题。给定一...

Global site tag (gtag.js) - Google Analytics