• 青蛙跳台


    此博客链接:https://www.cnblogs.com/ping2yingshi/p/13539509.html

    青蛙跳台

    题目链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/

    一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

    答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

    示例 1:

    输入:n = 2
    输出:2
    示例 2:

    输入:n = 7
    输出:21
    示例 3:

    输入:n = 0
    输出:1

    题解:

             说明:一个问题的解,可以把问题拆分为小的步骤求解,并且大问题依赖于小步骤的解,那么这类问题可以用递归处理。

             思路:此题青蛙跳台问题,每次青蛙跳下一个台阶时,可以把青蛙下一次跳台阶的前一个跳台阶的次数求解出来,这分为两种情况:

                      情况一:还有大于等于2个台阶可以跳,那此时青蛙跳台阶有两种跳法,1青蛙直接一次跳两个台阶。2.青蛙一次跳一个台阶,跳两次。

                      情况二:最后只有一个台阶,那么青蛙只能跳一个台阶,,只有一种跳法。

        计算公式:  最后只有一个台阶:f(n)=f(n-1);这里青蛙只有一种跳法,跳法数还是等于前一次得跳法数。(1)

                  最后有两个台阶:  f(n)=f(n-2)+2;这里青蛙可以选择一个一个跳,也可以选择一下子跳两个台阶。(2)

    以上我是正向想法,从倒数第二次台阶数来考虑青蛙可以有多少种跳法,这里会有一个问题,就是,上面公式(2)会包含公式一的跳法,即青蛙最后有两个台阶跳时,可以一个一个跳,当跳完第一个台阶时,后面再跳最后一个台阶时,这和只剩一个台阶数公式一重复了,所以逆向考虑最好。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

           我们考虑,当青蛙已经跳完最后一个台阶,成功到达楼上时,此时青蛙可能时从前面以恶搞台阶跳上来的,也可能时从前面两个台阶跳上来的,那青蛙最后一次的跳法可以有前面f(n-1)种跳法加上前面f(n-2)种跳法。

    递归条件是f(n)=f(n-1)+f(n-2)。

    递归出口:f(0)=1;f(1)=1;

    一开始直接用的递归,但是超时了

     把递归赶紧改成了循环。

    代码

    class Solution {
        public int numWays(int n) {
            if(n==0)
            return 1;
            if(n==1)  
            return 1;
            int a=1;
            int b=1;
            int sum=2;
            for(int i=2;i<=n;i++)
         {
             sum=(a+b)%1000000007;
             a=b;
             b=sum;
         }
     
       return sum;
        }
    }

            

            

         

    出来混总是要还的
  • 相关阅读:
    iPhone 调用Web Service 例子(转)
    iPhone开发:在UIAlertView中显示进度条(转)
    Oracel 分页
    NYOJ 477
    NYOJ 108(数组中存的是前n个数的和)
    NYOJ 199
    NYOJ 311(完全背包)
    高效斐数(前92位)
    NYOJ 57(6174问题)
    NYOJ 546(分珠宝)
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/13539509.html
Copyright © 2020-2023  润新知