【剑指offer - C++/Java】9、变态跳台阶

题目链接:变态跳台阶

文章目录

  • 1 题目描述
  • 2 题目分析
  • 3 代码
    • 3.1 动态规划算法
      • 3.11 Java代码
      • 3.12 C++代码
    • 3.2 递归算法
      • 3.21 Java代码
      • 3.22 C++代码
    • 3.3 直接求解 公式:f(n)=2^(n-1)^
      • 3.31 Java代码
      • 3.32 C++代码
  • 4 总结

1 题目描述

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

2 题目分析

假设f(n)代表青蛙跳上n级台阶的方法数。那么由于一次可以跳1级,也可以跳2级…它也可以跳n级。所以f(n)=f(n-1)+f(n-2)+…+f(1)+f(0);其中f(0)=1;根据这个式子可以写动态规划的算法

由上述公式知道:

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

将第二个式子合并到第一个式子得到:

f(n)=2*f(n-1); 根据这个式子可以写递归算法

又由上式知道:

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

得出:

f(n)=2n-1 根据这个式子可以直接求解。

下面我们就以上述三种方法写代码

3 代码

3.1 动态规划算法

3.11 Java代码

public class Solution {public int JumpFloorII(int target) {//动态规划// 不使用公式求解,采用动态规划if(target<=2)return target;int[] ret=new int[target+1];ret[0]=1;ret[1]=1;ret[2]=2;int i,j,tmp=0;for(i=3;i<=target;i++){for(j=0;j<i;j++){tmp+=ret[j];} ret[i]=tmp;tmp=0;}return ret[target];}
}

3.12 C++代码

class Solution {
public:int jumpFloorII(int number) {// 不使用公式求解,采用动态规划if(number==0)return 0;int ret[number+1];ret[0]=1;ret[1]=1;ret[2]=2;int i,j,tmp=0;for(i=3;i<=number;i++){for(j=0;j<i;j++){tmp+=ret[j];} ret[i]=tmp;tmp=0;}return ret[number];}
};

3.2 递归算法

3.21 Java代码

public class Solution {public int JumpFloorII(int target) {//采用递归求解 f(n)=2*f(n-1);if(target==0)return 0;if(target==1)return 1;return 2*JumpFloorII(target-1);}
}

3.22 C++代码

class Solution {
public:int jumpFloorII(int number){//采用递归求解 f(n)=2*f(n-1);if(number==0)return 0;if(number==1)return 1;return 2*jumpFloorII(number-1);}
};

3.3 直接求解 公式:f(n)=2(n-1)

3.31 Java代码

public class Solution {public int JumpFloorII(int target) {//采用公式求解 f(n)=2^(n-1)if(target==0)return 0;//return (int)pow(2,number-1); 直接返回这一句不要下面的代码也可以int ret=1;int i;for(i=1;i<target;i++)ret*=2;return ret;}
}

3.32 C++代码

class Solution {
public:int jumpFloorII(int number) {//采用公式求解 f(n)=2^(n-1)if(number==0)return 0;//return (int)pow(2,number-1);int ret=1;int i;for(i=1;i<number;i++)ret*=2;return ret;}
};

4 总结

理解上述公式的推导过程

探讨学习加:
个人qq:1126137994
个人微信:liu1126137994

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux上构建ASP.NET环境-asp.net关注

在Linux上安装mono,xsp,mod_mono后&#xff0c;可以构建一个ASP.NET环境&#xff0c;Mono项目是由Novell支持的。mono官网地址&#xff1a;mono下载页面&#xff1a;/mono-downloads/download.htmlXSP是一个轻量级的Web服务器&#xff0c;它是用100%的C#代码写成的纯.Net应用程…

【剑指offer - C++/Java】10、矩形覆盖

在线题目链接&#xff1a;矩形覆盖 文章目录1 题目描述2 题目分析3 代码3.1 递归方法3.11 Java代码3.12 C代码3.2 动态规划算法3.2 动态规划3.21 Java代码3.22 C代码3.3 循环方法3.31 Java代码3.32 C代码4、总结1 题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形…

C++ primer 笔记(二)

第9章 sequential container 顺序容器: vector 快速随机访问 list快速插入删除 deque双端&#xff0c;随机访问 C<T> c; C c(c2); C c(b,e); //迭代器,数组,指针&#xff0c;不要求两个容器类型相同 C<T> c(n,t); //只适用与顺序容器 C<T> c(n…

【剑指offer - C++/Java】11、二进制中1的个数

在线题目链接&#xff1a;二进制中1的个数 文章目录1 题目描述2 题目分析2.1 方法12.11 Java代码2.12 C代码2.2 方法22.21 Java代码2.22 C代码3 总结1 题目描述 输入一个整数&#xff0c;输出该数二进制表示中1的个数。其中负数用补码表示。 2 题目分析 2.1 方法1 这道题看起…

IIS 启动不了(服务没有及时响应启动或控制请求)解决

以前用360时为了加快开机速度,经常禁用一些服务, 就是这样 Eventlog WorldWideWebPublishing Remote Procedure Call IIS Admin Service 把这些服务都启动了就能启动iis网站了转载于:https://www.cnblogs.com/x4646/articles/1948780.html

【剑指offer - C++/Java】12、数值的整数次方

在线题目链接&#xff1a;数值的整数次方 文章目录1 题目描述2 题目分析2.1 方法1 循环2.11 Java代码2.12 C代码2.2 方法2 递归2.21 Java代码2.22 C代码3 总结1 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 2 题目分析 2.1 方…

ASP.NET四种页面导航方式之比较与选择

在ASP.NET应用中&#xff0c;Web表单之间的导航有多种方式&#xff1a;用超级链接&#xff0c;用Response.Redirect&#xff0c;用Server.Transfer&#xff0c;或者用Server.Execute。本文将分析这四种导航方式的异同及其优缺点&#xff0c;帮助你选择最佳的导航方式。 一、超级…

【剑指offer - C++/Java】13、调整数组顺序使奇数位于偶数前面

在线题目链接&#xff1a;调整数组顺序使奇数位于偶数前面 文章目录1 题目描述2 题目分析2.1 方法12.11 Java代码2.12 C代码2.2 方法22.21 Java代码2.22 C代码3 总结1 题目描述 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有的奇数位…

Camparable与Comparator之区别

一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的&#xff0c;这个类对象组成的集合就可以直接使用sort方法排序。 Comparator可以看成一种算法的实现&#xff0c;将算法和数据分离&#xff0c;Comparator也可以在下面两种环境下使用&#xff1a; 1、类的设计…

【剑指offer - C++/Java】14、链表中倒数第k的节点

在线题目链接&#xff1a;链表中倒数第k的节点 文章目录1 题目描述2 题目分析2.1 Java代码2.2 C代码3 总结1 题目描述 输入一个链表&#xff0c;输出该链表中倒数第k个结点。 2 题目分析 这道题比较简单。常规做法是先求出链表的总的节点个数n&#xff0c;然后再从头开始找第n-…

beta:scrum5

今天的工作 周一的工作 困难 王佳磊 收集数据&#xff0c;build了online的数据库, 38934 38939&#xff0c;收集更多数据&#xff0c;在新的API环境下&#xff0c;逐步发现并fix掉以前姓名到ID映射的bug. API的改动&#xff0c;ID的合并 肖巍&#xff0c;兰翠玲 等待测…

【软件开发底层知识修炼】十三 链接器-如何写出不依赖C库函数的代码

本文将综合以下4篇文章&#xff0c;学习如何写出不依赖libc库的程序&#xff1a; 【软件开发底层知识修炼】九 链接器-可重定位文件与可执行文件【软件开发底层知识修炼】十 链接器-main函数不是第一个被执行的函数【软件开发底层知识修炼】十一 链接器-链接脚本【软件开发底层…

前端学习(218):属性选择器

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>属性选择器&…

【软件开发底层知识修炼】十四 快速学习GDB调试一 入门使用

前面几篇文章学习了链接器相关的内容。现在开始来学习GDB调试。我们的目的是通过这几篇文章将GDB调试完全学会。 文章目录1 为什么需要GDB2 GDB 的常规应用3 GDB调试程序实例4 总结1 为什么需要GDB 什么是GDB&#xff1f; GNU项目中的调试器&#xff08;gnu debuger&#xff0…

前端学习(219):css伪类选择器

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>CSS伪类<…

【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试

上一篇文章我们学习了使用GDB的最基本方法&#xff1a;【软件开发底层知识修炼】十四 快速学习GDB调试一 入门使用 本篇文章将学习GDB的断点调试。断点调试是一种非常重要的调试方法。 文章目录1 断点类型2 GDB软件断点调试相关操作2.1 通过函数名设置断点2.2 通过文件名行号…

Informix IDS 11体系操持(918测验)认证指南,第 4 部门: 机能调优(1)

对 IBM Informix Dynamic Server (IDS) 和它的分比如子体系举行调优&#xff0c;以失掉最佳机能。在一个冗长的概述之后&#xff0c;本教程给出了一些关于怎样检查数据库做事器及其子体系的例子。本文是这个分 8 部门的 系列教程 的第 4 部门&#xff0c;这个教程可以帮手您筹办…

前端学习(220):伪元素选择器

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>CSS伪元素&l…

【软件开发底层知识修炼】十六 快速学习GDB调试三 使用GDB的数据断点监测变量是否改变

上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试&#xff1a;【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试本篇文章继续上一篇文章的学习&#xff0c;如何使用GDB的数据断点监测内存中的变量是否被改变 文章目录1 GDB的数据断点1.1 利…

AllTray-将办法最小化到琐细托盘

Toy Posted in AppsAllTray 是一个很有效的小办法&#xff0c;操纵它你可以将办法的窗口最小化到琐细托盘&#xff0c;从而腾出桌面空间以作它用。此办法主要为那些没有原生供给最小化到琐细托盘成效的办法而预备的。今朝&#xff0c;AllTray 可以在 GNOME、KDE、Xfce、Fluxbox…