zoukankan      html  css  js  c++  java
  • 剑指offer-4:变态条楼梯

    ##四、变态条楼梯
    ###题目描述
    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
    ###分析
    也是斐波那契数列问题,根据上述的思路,可以得到
    f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(0),由此就有两种思路解答
    (1)接着上式推出=> f(n)=2f(n-1)
    (2)通过创建一个数组,进行循环,把f(0)、f(1)、...、f(n-1)的值存入数组中,然后把数组元素的值都相加得到f(n)
    ###代码
    (1)

    public class Solution {
        public int JumpFloorII(int target) {
            if(target==0){
                return 0;
                
            }
            if(target==1){
                return 1;
            }
            return 2*JumpFloorII(target-1);
        }
    }

    (2)

    public class Solution {
        public int JumpFloorII(int target) {
            if(target <= 2){
                return target;
            }
            int[] dp = new int[target + 1]; // 0 号不使用
            dp[1] = 1; //跟普通的 pre2 一个意思
            dp[2] = 2; //跟普通的 pre1 一个意思
            for (int i = 3; i <= target; i++){
                for (int j = i - 1; j >= 1; j--){
                    dp[i] += dp[j];
                }
                dp[i]++;
            }
            return dp[target];
        }
    }
  • 相关阅读:
    void及void指针含义的深刻解析
    jbpm入门样例
    给字符数组赋值的方法
    linux tar.gz zip 解压缩 压缩命令
    android 文件上传
    职员有薪水了
    sublime配置全攻略
    [置顶] WPF数据修改demo
    Java实现快速排序
    Java实现快速排序
  • 原文地址:https://www.cnblogs.com/JimShi/p/11362486.html
Copyright © 2011-2022 走看看