day08

青蛙跳台阶问题

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

//青蛙跳台阶问题
package day08;
public class test01 {
    public int numWays(int n) {
        //动态规划
        //思路分析:借助辅助变量sum,利用双指针,a、b。a = b向后移动a(a从0移动到n的位置停下,所以最后返回a)
        // b = sum向后移动b(为了同步)
//        int a=1,b=1,sum;
//        for (int i=0;i<n;i++){
//            sum=(a+b)% 1000000007;
//            a=b;
//            b=sum;
//        }
//        return a;

        //递归
        //创建数组res[n + 1],(一定是n + 1,否则当n = 0的时候访问res[0]会出现越界报错
        // 让n = 0和n = 1赋值为1存入数组,从第三个元素(下标为2)开始递归,最后返回res[n]
        int[] res = new int[n+1];
        if (n>=0)
            res[0]=1;
        if (n>=1)
            res[1]=1;
        for (int i=2;i<=n;i++){
            res[i] += (res[i - 1] + res[i - 2]) % 1000000007;
        }
        return res[n];
 }
}

 

posted @ 2020-04-21 21:20  行之!  阅读(125)  评论(0编辑  收藏  举报