变态跳台阶

变态跳台阶

http://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387

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

思路:
方法一:暴力解法
图片说明

public class Solution {
    public int JumpFloorII(int target) {
        if(target==0){
            return 0;//起点没跳,则为0
        }
        int []dp=new int[target+1];//用于存储f(i)的步数
        dp[0]=1;
        for(int i=1;i<=target;i++){//从1到目标台阶
            for(int j=0;j<i;j++){//累加,从0加到i
                dp[i]+=dp[j];//存入数组
            }
        }
        return dp[target];
    }
}

方法二:优化,从数学角度将目标规律找出
易知
f(n)=f(n-1)+f(n-2)+……f(1)
f(n-1)=f(n-2)+……f(1)
两式相减得f(n)=2f(n-1)
当然,你会发现一个规律:

f[0] = f[1] = 1

f[2] = 2 = 21

f[3] = 4 = 22

f[4] = 8 = 23
public class Solution {
    public int JumpFloorII(int target) {
        return (int)Math.pow(2,target-1)//pow()方法为第二参数是第一个参数的次方
    }
}
全部评论

相关推荐

暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务