剑指offer:变态跳台阶(代码片段)

bylight bylight     2022-12-04     180

关键词:

题目

题目链接
剑指offer:变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

这题的名字和题面都和跳台阶这题很相似,没看过的同学可以先看看。
很明显,这题最大的改变就是状态转移式由原来的f[n]=f[n-1]+f[n-2]变成了f[n]=1+f[1]+f[2]+...+f[n-1]。这就意味着不能完全照搬斐波那契数列的思想进行解题。但这个状态转移式很明显也具有规律性,我们可以尝试进行一些初步的推导:
在n<2时,f[n]时特殊情况,上述的转移式不成立,因此我们从n=2开始推导。
首先写出式子,f[2]=1+f[1];f[3]=f[2]+1+f[1]。我们尝试将第一个式子代入后面的式子,便得到f[3]=1+f[1]+1+f[1]=2*f[2]。同样的,f[4]=f[3]+1+f[1]+f[2]=2*(1+f[1]+f[2])=2*2*(1+f[1])=2*2*f[2]。
以此类推,我们可以得出,在n>2时,f[n]=2n-2*(f[2])。又f[1]=1,f[2]=1+f[1]=2=2*f[1]。所以状态转移式最终可以简化为f[n]=2n-1*f[1]=2n-1

具体代码

class Solution 
public:
    int jumpFloorII(int number) 
        if (number < 0)
            return -1;
        int sum = 1; 
        for (int i = 2; i <= number; i++) 
            sum *= 2;
        return sum;
    
;

剑指offer:变态跳台阶(代码片段)

目录题目解题思路具体代码题目题目链接剑指offer:变态跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路这题的名字和题面都和跳台... 查看详情

剑指offer变态跳台阶(代码片段)

...蛙跳上一个n级的台阶总共有多少种跳法。解法1本题是【剑指Offer】跳台阶的进化版本。原来的青蛙只可以跳上1级或2级,即F(n)=F(n-1)+F(n-2)现在的青蛙可以跳上1到n的任意级,按照之前的解题思路,依然先来看F(n),对于一个n级台... 查看详情

剑指offer-java-变态跳台阶(代码片段)

变态跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码:packagecom.hlq.test;/***@authorhelongqiang*@date2020/5/1120:34*//***一只青蛙一次... 查看详情

剑指offer——变态跳台阶(代码片段)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解:classSolutionpublic:intjumpFloorII(intnumber)vector<int>dp(number+1,0);dp[0]=1;dp[1]=1;dp[2]=2;for(inti=3;i<=number;... 查看详情

剑指offer变态跳台阶(代码片段)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:做一个简单的数学推导,令跳上一个n级台阶总共的跳法为F(n),F(n)=F(n-1)+F(n-2)+....+F(0)=F(n-1)+F(n-1)... 查看详情

剑指offer[9]——变态跳台阶(代码片段)

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。这个题目是跳台阶的进阶版,其实跟大家分析一下,这道题其实比上一道题简单。在这道题目中,... 查看详情

剑指offer9.变态跳台阶(代码片段)

9.变态跳台阶题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路与上题相似,假设要到3级,那么可以从0,1,2级直接到三级,那么f3=f1+f2+1,f2=f1+1,f3=... 查看详情

剑指offer变态跳台阶

【问题描述】一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。时间限制:1秒 空间限制:32768K 【AC代码】f(n-1)=f((n-1)-1)+f((n-1)-2)+f((n-1)-3)+·&... 查看详情

剑指offer---变态跳台阶

classSolution{public:intjumpFloorII(intnumber){if(number==1){return1;}elseif(number==2){return2;}else{return(2*jumpFloorII(number-1));}}};  查看详情

[剑指offer]变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 a[1]=1a[n]=a[n-1]+a[n-2]+...+a[1]+1a[n-1]=a[n-2]+...+a[1]+1=>a[n]=a[n-1]+a[n-1]=2*a[n-1]=>a[n]=2^(n-1)逻辑明白了... 查看详情

剑指offer-青蛙变态跳台阶-全概率公式

        查看详情

《剑指offer》题目:变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析:f(0)=1;表示n级台阶一次跳n级,只有一种跳法f(1)=1;f(2)=2;f(3)=f(2)+f(1)+f(0)...f(n)=f(n-1)+f(n-2)+.... 查看详情

9剑指offer--变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路:可知本题f(n)=f(1)+f(2)+...+f(n-1)+1;通过数学归纳法得到f(n)=2^(n-1)1#include<iostream>2using... 查看详情

剑指offer变态跳台阶(代码片段)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码:1//动态规划版2classSolution3public:4intjumpFloorII(intnumber)5if(number==0)6return0;7intcount=1;8for(inti=1;i&... 查看详情

剑指offer变态跳台阶(代码片段)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码:1//动态规划版2classSolution3public:4intjumpFloorII(intnumber)5if(number==0)6return0;7intcount=1;8for(inti=1;i&... 查看详情

[剑指offer]2.变态跳台阶

题目一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级……它也能够跳上n级。求该青蛙跳上一个n级的台阶总共同拥有多少种跳法。思路用Fib(n)表示青蛙跳上n阶台阶的跳法数,设定Fib(0)=1;当n=1时。仅仅有一种跳法,即1阶跳,即F... 查看详情

剑指offer九之变态跳台阶

一、题目  一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。二、思路1、关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1)=1f(2)=f(2-1)+f(2-2) &nbs... 查看详情

剑指offer---09---动态规划:变态跳台阶

https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387?tpId=13&tqId=11162&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking  题意青蛙的跳法可以有n种就是 查看详情