原题链接: https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 示例1: 输入:输入:n = 2 输出:2 示例2: 输入:输入:n = 7 输出:21 示例3: 输入:n = 0 输
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 思路:找规律:跳三级台阶等于跳两级台阶的跳法+跳一级台阶的跳法。跳四级台阶等于跳三级台阶的跳法+跳二级台阶的跳法。明显也符合斐波那契数列的规律f(n) = f(n-
题目:第39级台阶 小明刚刚看完电影《第39级台阶》。 离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶。 先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。 那么,上完39级台阶,有多少种不同
首先先分享下自己总结的EPS中绘图常用快捷键,运用好快捷键会让你效率翻倍 :),熟悉快捷键后我们再来一步步看看复杂台阶的画法。1EPS常用快捷键Shift+A:改变点的高程点Ctrl+A:锁定高程Shift:拖点X:回退一点Shift+X:回退多点C:闭合Z:划线调转方向Shift+Z:将线反向S:捕捉交点D:捕捉任意点Shift+D:做一
一、名词解释 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、
忽略奇数偶数步,忽略胶水,就是一个一维dp,例如只能走1 2 4步,dp[n] = dp[n - 1] + dp[n - 2] + dp[n - 4] (当然要注意最后的台阶要单独处理 因为可以到负的层次) 加上奇数偶数步,那就是一个二维dp, dp[0][j]表示偶数步到i层,dp[1][i]表示奇数步到i层 初始化dp为0,dp[0][0] = 1,注意dp[1][
文章目录1.题目2.思考分析3.C语言实现代码1.题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?示意图2.思考分析 青蛙从地面开始跳,具体如下: 如果只有1级台阶,那显然只有一种跳法。 *如果有2级台阶,那么就有2种跳法,一种是分2次跳,
目标 看了十二届蓝桥杯的大题,动态规划(Dynamic Programming)似乎用得很多,既然要考,那就学,希望初步理解动态规划的思想,并能够利用它来解决相关简单问题。 是什么 动态规划是求解最优解的过程,求解最优解这类问题一般都能用dp解决。 怎么做 dp没有统一的处理方法,必须根据问题的各种性质
题目链接: https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/ 题意: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 题解: 入门DP。 F[0]=F[1]=1 F[n]=F[n-1]+F[n-2] 代码: class Solution: def numWays
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路: 这种题目多为找规律求通用公式并最终用代码实现。 首先,考虑最简单的情况就是1个台阶,即仅有1种跳法;2个台阶,有2种跳法;3个台阶,有3种跳法;4个台阶,
package blueBridge; import java.util.*; import java.math.BigInteger; import java.util.*; public class testOne { /* * 题目 * 小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。 * */ static int UpCase(
递归需要满足三个条件 1. 一个问题的解可以分解为几个子问题的解 2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一致。 3. 存在递归终止条件 如何编写递归代码 最关键的是写出递推公式,找到终止条件,剩下将递推公式转化为代码 假如有n个台阶,每次可以跨1个台阶或者2个
解题思路:通过找规律,发现其实这也是斐波那契数列 # -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): #n=1 f(n)=1 #n=2,11,2, f(n)=2 #n=3,111,12,21 f(n)=3 #n=4,1111,121,211,22,112,f(n)=5 if number==1
问题描述:假设有一座高度是30级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。 分析问题:如果每次走一步,则需要走40步;如果每次走两步,则需要走20步;走一步和走两步可以有交叉,那么总共有多少种呢? 这时我们先假设台阶数为1,则方法只有一种,F(1
问题描述:假设有一座高度是30级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。 分析问题:如果每次走一步,则需要走40步;如果每次走两步,则需要走20步;走一步和走两步可以有交叉,那么总共有多少种呢? 这时我们先假设台阶数为1,则方法只有一种,F(1
剑指 Offer 10- II. 青蛙跳台阶问题 动态规划 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 class Solution { public: int numWays(int n) { if(n==0) return 1; if(n==1) return 1; if(n==2)
题目一:求斐波那契数列的第 n 项 写一个函数,输入n,求斐波那契(Fibonacci)数列的第 n 项。 解法一:递归 public static int Fibonacci(int n) { if(n <= 0) return 0; if(n == 1) return 1; return Fibonacci(n-1) + Fibonacci(n-2); } 这道题用递归会存在非常严重的效率问题
题源 一个楼梯共有n级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。 输入格式 共一行,包含一个整数n。 输出格式 共一行,包含一个整数,表示方案数。 数据范围 1≤n≤15 输入样例: 5 输出样例: 8 百度了一下发现就是斐波那契数列,惭愧惭愧 #include
剑指Offer10-2.青蛙跳台阶问题Golang版 1. 问题描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21
博弈论 思考题 发现留下来了两道习题,可以用来思考解答 第一道题应该和 XOR 异或 有关 第二题应该是需要用SG函数求解的,只要找到规律然后写出SG函数的转换 892. 台阶-Nim游戏 现在,有一个n级台阶的楼梯,每级台阶上都有若干个石子,其中第i级台阶上有ai个石子(i≥1)。 两位玩家轮流操作,
递归 什么是递归递归需要满足的三个条件举个栗子递归代码要警惕堆栈溢出递归代码要警惕重复计算引用 什么是递归 周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊?电影院里面太黑了,看不清,没 法数,现在你怎么办? 别忘了你是程序员,这个可难不倒你,递归就开始
一、什么是递归 递归是一个思想,总结为以下两点 一.将一个问题拆解为几个子问题(拆分后的子问题和原问题除了规模不同其他思路相同) 何为子问题?子问题就是数据规模更小的问题。 二.找出问题的终止条件 把问题分解为子问题,把子问题再分解为子子问题,一层一层分解下去,不能存在无限
高僧斗法 试题 历届试题 高僧斗法 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。 节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有
博弈论 简单介绍 就是两个对象在进行某个斗争,按照某种规则,会有先手必赢和后手必赢的局面产生,我们就是要根据不同的规则去研究策略。 然后关于博弈论的话,常见的题目都是公平组合游戏; 公平组合游戏呢…就是游戏人数为2,二者轮流做出决策,且双方都知道游戏规则;任意一个游戏者在某