剑指Offer八: 跳台阶

题干

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

思路

对于跳台阶问题是一个很好的思想,也是一个比较完美的动态规划问题,前面走过的路,进行记录,后面可以继续来使用,这里先进行一个简单的分析

台阶数 方法 不同的结果
1 1 1
2 11 2 2
3 111 12 21 3
4 1111 112 121 211 22 5
5 11111 1112 1121 1211 2111, 122 212 221 8

可以看到的是对于每层的台阶由于只有两种跳的方法,就是跳一和跳二,这个时候每多增加一级的台阶的时候,就是在原来的基础上面将空闲的位置插入一个1,然后将满足两个1的转换成为一个2,就导致了,对于下一级的台阶的结果集就是等于上两个台阶的结果集,我们从上面的表格中也能够看到结果,和斐波那契数列有异曲同工之秒。

代码

public class Solution {
    public int JumpFloor(int target) {
        if(target<=0)
            return 0;
        if(target==1)
            return 1;
        if(target==2)
            return 2;
        return JumpFloor(target-1)+JumpFloor(target-2);
        
    }
}
发布了26 篇原创文章 · 获赞 5 · 访问量 696

猜你喜欢

转载自blog.csdn.net/weixin_44015043/article/details/105334218