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);
            }
        }
    }
    
  • 相关阅读:
    Multi-Sensor, Multi- Network Positioning
    基于智能手机的3D地图导航
    2010上海世博会三维导航地图
    hdu 5452(树链刨分)
    蓝桥杯危险系数
    蓝桥杯横向打印二叉树(中序+先序遍历)
    蓝桥杯幸运数(线段树)
    hdu 5185(DP)
    2014江西理工大学C语言程序设计竞赛高级组题解
    uva 12730(期望经典)
  • 原文地址:https://www.cnblogs.com/ggmfengyangdi/p/5763736.html
Copyright © 2011-2022 走看看