剑指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种就是说能跳1步,跳2步,跳n步都可以,问n个台阶跳法

分析

动态规划

当前的值和前面所有的结果都有关系,所以使用数组来保存所有的临时结果。

代码

public class Solution {

public int JumpFloorII(int target) {

if(target<=0)return 0;

int[] dp = new int[target+1];

dp[0]=1;

dp[1]=1;

for(int i=2;i<=target;i++){

int j=0;

while(j<i){

dp[i]+=dp[j];

j++;

}

}

return dp[target];

}

}

原文地址:https://www.cnblogs.com/buptyuhanwen/p/9376961.html

时间: 2024-10-14 14:53:56

剑指offer---09---动态规划:变态跳台阶的相关文章

剑指offer源码系列-跳台阶

这是一个斐波那契数列的变形 题目1388:跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:3030解决:1226 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 5 样例输出: 8 #include<iostream> #includ

剑指offer(8)跳台阶

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题代码: function jumpFloor(number) { // write code here //跳台阶问题是斐波那契数列的一个形式转换,要跳上n级台阶 //如果第一步跳1级,剩下台阶的跳法即为跳上n-1级台阶的跳法 //如果第一步跳2级,剩下台阶的跳法即为跳上n-2级台阶的跳法 if(number <= 2){ return number; } va

剑指offer系列8--青蛙跳台阶问题

[题目]一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.[思路] * n=1时,有1种跳法,f(1)=1; * n=2时,有2种跳法,f(2)=2; * n=3时,有3种跳法,f(3)=3=f(3-1)+f(3-2)=f(2)+f(1); * n=4时,有5种跳法,f(4)=f(4-1)+f(4-2)=f(3)+f(2)=5; [code] 1 package com.exe2.offer; 2 3 /** 4 * [题目]一只青蛙一次可以跳上1级台阶,

《剑指Offer》题目:跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目分析:这其实就是斐波拉契数列,递归的思想,用递推来实现,防止栈溢出. public class JumpFloor { public static int jumpFloor(int target) { int res[] = new int[2]; res[0]=1; res[1]=2; // 与前面的题只有初始值不一样 int temp = 0; if(target==0) return

剑指offer9:青蛙变态跳台阶,1,2,3……,n。

1. 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 2. 思路和方法 每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台阶必须跳.所以共用2^(n-1)中情况.换个表述可能更容易懂一点:小鸟要从起点0飞到终点N.中间有1~n-1个点可以中途停靠休息,它可以休息可以不休息,休息次数不限.问,到终点时,一共有多少种情况. 实现放方法: F(n) = F(n-1)+F(n-2)+...+F(1):F(n-1) = F

剑指offer 09变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. java版本: public class Solution { public static void main(String[] args){ long startTime=System.currentTimeMillis(); System.out.println("第4项的结果是:"+JumpFloorII(4)); long endTime=System.current

剑指OFFER----面试题10- II. 青蛙跳台阶问题

链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 代码: class Solution { public: int numWays(int n) { std::vector<int> vec = {1, 1}; for(int i = 2; i <= n; i++){ vec.push_back((vec[i-2] + vec[i-1])%1000000007); } return vec[n];

《剑指offer》题解

有段时间准备找工作,囫囵吞枣地做了<剑指offer>提供的编程习题,下面是题解收集. 当初没写目录真是个坏习惯(-_-)||,自己写的东西都要到处找. 剑指Offer - 九度1524 - 复杂链表的复制 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先 剑指Offer - 九度1508 - 把字符串转换成整数 剑指Offer - 九度1504 - 把数组排成最小的数 剑指Offer - 九度1503 - 二叉搜索树与双向链表 剑指Offer - 九度1390 - 矩形覆盖 剑

剑指offer算法总结

剑指offer算法学习总结 节选剑指offer比较经典和巧妙的一些题目,以便复习使用.一部分题目给出了完整代码,一部分题目比较简单直接给出思路.但是不保证我说的思路都是正确的,个人对算法也不是特别在行,只不过这本书的算法多看了几遍多做了几遍多了点心得体会.于是想总结一下.如果有错误也希望能指出,谢谢. 具体代码可以参考我的GitHub仓库: https://github.com/h2pl/SwordToOffer 数论和数字规律 从1到n整数中1出现的次数 题目描述 求出1~13的整数中1出现的

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

题目 一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级--它也能够跳上n级. 求该青蛙跳上一个n级的台阶总共同拥有多少种跳法. 思路 用Fib(n)表示青蛙跳上n阶台阶的跳法数,设定Fib(0) = 1: 当n = 1 时. 仅仅有一种跳法,即1阶跳,即Fib(1) = 1; 当n = 2 时. 有两种跳的方式,一阶跳和二阶跳,即Fib(2) = Fib(1) + Fib(0) = 2; 当n = 3 时.有三种跳的方式,第一次跳出一阶台阶后,后面还有Fib(3-1)中跳法,第一次跳出二阶台阶后.