zoukankan      html  css  js  c++  java
  • 剑指Offer_08_跳台阶

    题目描述

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

    解题思路

    这是一个动态规划的题。对于n个台阶,可以是n-1个台阶跳一步得到,也可以是n-2步台阶跳两步得到。因此有递归式 f(n) = f(n-1) + f(n-2);
    因此可以使用两种方式递归和循环来实现。

    实现

    1. 循环
    public class Solution {
        public int JumpFloor(int target) {
    		if(target==1) return 1;
            if(target==2) return 2;
            int fn_1 = 2, fn_2 = 1;
       		int fn = 0;
            for(int i = 3; i <= target; i++){
                fn = fn_1 + fn_2;
                fn_2 = fn_1;
                fn_1 = fn;
            }
            return fn;
        }
    }
    

    2. 递归

    public class Solution {
        public int JumpFloor(int target) {
            if (target == 0) return 0;
            int[] dp = new int[target + 1];
            for (int i = 0 ; i < target + 1; i ++){
                dp[i] = -1;
            }
    
            dp[0] = 1;
            dp[1] = 1;
    
            return jumpFloor(target, dp);
        }
    
        private int jumpFloor(int n, int[] dp) {
            if (dp[n] >= 0) return dp[n];
            else{
                return dp[n] = fibonacci(n - 1, dp) + fibonacci(n - 2, dp);
            }
        }
    }
    
  • 相关阅读:
    1035: 相同生日
    1034: 7, 还是7
    1033: 青蛙的约会
    1032: 蛇行矩阵
    1031: 最少钱币数
    1030: 到底买不买
    1029: 挖掘机技术哪家强
    scikit-learn 和pandas 基于windows单机机器学习环境的搭建
    用scikit-learn和pandas学习线性回归
    SimRank协同过滤推荐算法
  • 原文地址:https://www.cnblogs.com/ggmfengyangdi/p/5763736.html
Copyright © 2011-2022 走看看