爬楼梯与斐波那契数列

您所在的位置:网站首页 斐波那契数列爬楼梯问题 爬楼梯与斐波那契数列

爬楼梯与斐波那契数列

2024-07-17 17:34:52| 来源: 网络整理| 查看: 265

今天做leetcode时,做到了爬楼梯问题:

https://leetcode.com/problems/climbing-stairs/

问题不再赘述。

  刚开始看到题的时候,就想着分析n级楼梯,直接得出答案。但是,在分析的过程中发现,若是对于一个常数n,且n不太大的情况下,利用排列组合的方法,也许可以得出结果,但是工作量大得无法想象,遂放弃排列组合。

  于是,老办法,n=1,n=2,n=3...发现竟然有点像斐波那契数列,于是,按照斐波那契数列的方法去做,果然ok!

  虽然得到了结果,但是偏执癌又犯了,为什么可以用斐波那契数列解决呢?思索之后,未得出满意的结果,遂查找资料:

  斐波那契数列,兔子生产与斐波那契数列,爬楼梯与斐波那契数列。。。

  (期间推敲了兔子生产的问题)

 

  在这个博客里 http://blog.csdn.net/ljsspace/article/details/6455293 给出了让人满意的分析:

  首先考虑第一步的走法:第一步可以走1级台阶,也可以走2级台阶。那么,设S(n)表示走n级台阶的走法数量,如果第一步走1级台阶,剩下的台阶数为n-1,也就是说这种情况下的走法是相当于S(n-1);同理,如果第一步走2级台阶,剩下的台阶数为n-2,这样的走法相当于S(n-2);于是,得出递推公式:

S(n) = S(n-1) + S(n-2);

  接下来就很简单了:

S(1)=1,S(2)=2;

  这下感觉圆满了!!

  

  不过,还是应当反思一下,为什么自己没有想到这样去分析呢?其实最初开始分析的时候,也是朝着这个方向去的,但是,思考一阵之后,没有得出满意答案,于是就放弃了。其实,这是一直都存在的毛病,确切说,应该是见得少的缘故,导致没有足够的经验,权衡之后,选择放弃,因为有可能是白白浪费时间和精力。事实证明,放弃的决定大多数是错误的:首先,对问题的“第一印象”是很重要的,往往就是从“第一印象”着手去分析,因为对于一个陌生的问题,也只能这样做;其次,随着分析的深入,从“第一印象”扩展开来,都会大致朝着正确的方向的,并逐渐接近问题的本质,那句话怎么说来着?透过现象看本质,现象是事物本质的外部表现,等等(理论学得不好),大概就是说通过现象去认识本质(词穷了);再次,在除去将要被“放弃”的方向之外,没有其他可以努力的方向时,就更不应该放弃了。

 

  还有一个问题:

  在实现过程中,使用两种方法:

  由于水平有限,“第一印象”只能想到这两种。

  方法一:

class Solution { public: int climbStairs(int n) { if(n == 1){ return 1; }else if(n == 2){ return 2; }else{ int n1 = 1, n2 = 2; int nf; for(int i = 2;i < n;++i){ nf = n1 + n2; n1 = n2; n2 = nf; } return nf; } } };

方法二:

class Solution { public: int climbStairs(int n) { if(n == 1){ return 1; }else if(n == 2){ return 2; }else{ vector buff; buff.push_back(1); buff.push_back(2); for(int i = 2;i < n;++i){ int temp = buff[i - 1] + buff[i - 2]; buff.push_back(temp); } return buff[n-1]; } } };

  两种方法提交之后,方法二的Runtimes比方法一的要少,这说明使用法二性能比法一要好,就涉及到vector相关性能分析了,稍后再补上。

  如果有哪位能够给出一些指导,将不胜感激!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭