`
蒙面考拉
  • 浏览: 161144 次
  • 性别: 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里面有讲。

分享到:
评论

相关推荐

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

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

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

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

    Python解决N阶台阶走法问题的方法分析

    题目描述了一个有趣的场景:假设有一栋楼有N阶楼梯,一只兔子每次可以选择跳1阶、2阶或3阶,那么问题来了——当楼梯总数为N阶时,这只兔子有多少种不同的跳跃方式可以到达顶层? #### 二、问题解析 这个问题的本质...

    《台阶》.ppt

    同时,父亲在台阶上的各种动作——不管是“我”在台阶上跳上跳下的活泼场景,还是父亲坐在台阶上的沉思姿态——都在无声地叙述着父亲对于高台阶的深切向往。 语言方面,李森祥运用了一些具有浓厚地方色彩的方言词汇...

    简单的算法集合(c语言)

    8. **台阶问题**:又称“青蛙跳台阶”问题,假设青蛙每次可以跳1步或2步,问到达n阶台阶有多少种跳法。可以使用斐波那契数列来解决,C语言实现需要理解和应用递推关系。 每个算法的实现都需要理解问题本质,选择...

    猴子,有C、c++和Java都有源代码

    从C语言的结构化编程,到C++的面向对象编程,再到Java的面向对象与跨平台特性,每一步的深入,都意味着对编程语言本质理解的加深和编程技能的提升。 值得一提的是,猴子游戏不仅仅是一个教学工具,它还可以被扩展为...

    例谈促进深度学习的课堂引导策略.pdf

    变式教学通过改变问题的条件或结论,转换问题的形式或内容,引导学生从变化的现象中发现不变的本质,从而揭示方法的实质。在文章中,作者通过方程的实例,展示了一种通过变更参数来引导学生发现二次方程根的取值范围...

    程序员编程艺术第一 ~二十七章

    - **第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题** - 包含了组合数学、递归算法等高级主题。 - **第二十一~二十二章:出现次数超过一半的数字,最短摘要的生成** - 探讨了数据统计和...

    判断青蛙过河leetcode-leetcode:https://leetcode-cn.com/problemset/all/

    青蛙跳台阶问题分析(实质上就是斐波那切数列)√ 磁盘容量大小排序 √ 二分查找 √ 冒泡排序 √ 选择排序 √ 插入排序 √ 快速排序 √ 希尔排序 归并排序 桶排序 基数排序 × 一个整数分解成两个质数和 √ 数据分类...

Global site tag (gtag.js) - Google Analytics