zoukankan      html  css  js  c++  java
  • day10(跳台阶)

    题目描述

    一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
     
    提交链接:点击
     
    思路:采用动态规划的思想。设F[n]表示的是到达n级台阶的所有跳法数。考虑n级台阶总共有多少中跳法F[n],先考虑n-2级台阶有多少中跳法F[n-2],再考虑n-1级台阶有多少中跳法F[n-1]。其中,由于青蛙一次能跳1级台阶或2级台阶,于是n-2级台阶青蛙可以跳2级台阶到达n级台阶,n-1级台阶青蛙可以跳1级到台阶到达n级台阶。于是得到动态规划式子:F[n]=F[n-1]+F[n-2]
     
    代码:
    class Solution {
    public:
        int jumpFloor(int number) {
            int F[number+1];
            F[0]=1;
            F[1]=1;
            for(int i=2;i<=number;i++){
                F[i]=F[i-1] + F[i-2];
            }
            return F[number];
        }
    };

    题目描述

    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     
    提交链接:点击
     
    思路:因为青蛙可以跳1级,2级...n级。由上一道题,可以考虑这题,写出动态规划表达式
     
          f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n)     =>     f(0) + f(1) + f(2) + f(3) + ... + f(n-1)

          f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)

          f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) = f(n-1) + f(n-1)

          可以得出:

          f(n) = 2*f(n-1)

     
    代码:
    class Solution {
    public:
        int jumpFloorII(int number) {
            int F[number+1];
            F[0]=1;
            F[1]=1;
            for(int i=2;i<=number;i++){
                F[i]=2*F[i-1];
            }
            return F[number];
        }
    };

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    Hibernate--Day01
    Java语言基础之数组
    Java语言基础之方法的设计
    Jmeter-文件目录
    Jmeter-简介及安装
    测试基础-测试策略与类型
    测试基础-软件测试计划
    测试基础-软件测试流程与测试模型
    测试基础-软件测试的环境
    测试基础-软件测试目的与对象
  • 原文地址:https://www.cnblogs.com/logo-88/p/9676789.html
Copyright © 2011-2022 走看看