zoukankan      html  css  js  c++  java
  • [LeetCode] 70. Climbing Stairs(斐波那契数列)

    【思路】

    a.因为两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); 
    b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) 
    c.由a、b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) 
    d.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2 
    e.可以发现最终得出的是一个斐波那契数列。

    由于直接用递归会超时,于是用数组来存储每一个位置的走法数目。代码如下:

     1 class Solution {
     2 public:
     3     int climbStairs(int n) {
     4         if(n == 0 || n == 1 || n == 2)
     5             return n;
     6         int *res = new int[n + 1];
     7         res[1] = 1;     //有1级台阶时
     8         res[2] = 2;     //有2级台阶时
     9         for(int i = 3;i <= n;i ++)
    10         {
    11             res[i] = res[i - 1] + res[i - 2];
    12         }
    13         return res[n];
    14     }
    15 };
  • 相关阅读:
    jquery mobile
    可能用到的负边距应用
    兼容性问题
    less和scss
    函数的继承
    关于canvas
    html5表单属性
    html代码
    git 拉取远程分支 --本地分支不存在
    git 删除分支
  • 原文地址:https://www.cnblogs.com/lca1826/p/6412182.html
Copyright © 2011-2022 走看看