[Tyvj Jan]青蛙跳荷叶】的更多相关文章

题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 从前,有一个小青蛙决定去荷叶上练习跳跃.现在有n个荷叶排成一排,小青蛙一开始在最左边的荷叶(一号荷叶)上,当然,这个青蛙是很牛X的,可以在任意两个荷叶之间跳跃.有一天这个青蛙突发奇想,想用一种奇怪的方式完成跳跃练习:1.它希望每次跳到不同的荷叶上2.每一次跳的距离不同当然,作出这个决定是何其的简单,但是跳跃方式是何其的困难……,所以他希望你可以帮他解决这个问题. 下面给出这个问题…
问题 一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. 思路 当n=1时,只有一种跳法,及f(1)=1,当n=2时,有两种跳法,及f(2)=2,当n=3时,可以从n=1直接跳到n=3,也可以从n=2直接跳到n=3,及f(3)=f(1)+f(2)=3...,所以可以使用递归,自顶向下,一步一步求解,但是仔细分析一下,如果n=10,需要求得f(9)和f(8),而f(9)=f(8)+f(7),f(8)=f(7)+f(6),可以很明显看到,求了重复的f(…
递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调用的层级太多,就会超出栈容量. 循环:通过设置计算的初始值及终止条件,在一个范围内重复运算. 斐波拉契数列 题目一:写一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项,定义如下: 第一种解法:用递归的算法: long long Fabonacci(unsigned int n) { i…
P1431 [Tyvj Jan]分配任务 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述      随着tyvj发展越来越大,管理员的任务越来越重,如何合理的分配任务,成为了一个可研究的命题.Tyvj当前一共有M个需要做的任务,和N位 管理员.每一个管理员的上线时间并不是固定的,每一个人有d[i]单位的上线时间,每一位管理员一个单位的时间可以完成一个任务,且一个任务只能由一个管 理员来完成(如果更多的管理员参与进来,可能会造成混乱).每一位管理员的能力有…
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级台阶总共有多少中跳法. http://www.nowcoder.com/books/coding-interviews?page=1 思路:问题本质上是fibonacci问题. class Solution {public: int jumpFloor(int number) { int jumpNumber=0;//青蛙跳台阶跳法 if(0>=number){jumpNumber=0;} else if(1==numb…
(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. //递归方式  public static int f(int n) { //参数合法性验证 if (n < 1) { System.out.println("参数必须大于1!"); System.exit(-1); } if (n == 1 || n == 2) return 1; else return f(n - 1) + f(n - 2); } //非递归方式  pu…
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一: . 跳到相邻的空杯子里. . 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. . 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步,就可跳成下图局面…
Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Your goal is to reach the last index in the minimum number of jumps…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 很裸的斐波那契数列. class Solution { public: int jumpFloor(int number) { if(number<=0 || number==1){ return 1; } return jumpFloor(number-1) + jumpFloor(number-2); } };…
一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 其实题目很水...就是一个等比数列通项公式嘛 f(0)=1 f(1)=1 f(n)=f(0)+f(1)+...+f(n-1) ==> f(n)=2*f(n-1) (when n>=2) ==> f(n)=2^(n-1) class Solution { public: int jumpFloorII(int number){ /* 暴力写法 if(number==0){ ret…
 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 思路 如果直接写递归函数,由于会出现很多重复计算,效率非常底,不采用. 要避免重复计算,采用从下往上计算,可以把计算过了的保存起来,下次要计算时就不必重复计算了:先由f(0)和f(1)计算f(2),再由f(1)和f(2)计算f(3)……以此类推就行了,计算第n个时,只要保存第n-1和第n-2项就可以了.…
https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 解析 关于本题,前提是n个台阶会有一次n阶的跳法.分析如下: f(1) = 1 f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数. f(3) = f(3-1) + f(3-2)…
(2015浙江重点中学协作体一模) 设ABCDEF为正六边形,一只青蛙开始在顶点A处,它每次可随意地跳到相邻两顶点之一.若在5次之内跳到D点,则停止跳动:若5次之内不能到达D点,则跳完5次也停止跳动.那么这只青蛙从开始到停止,可能出现的不同跳法共_______种. 分析:易知青蛙不能经过跳1次.2次或4次到达D点,故青蛙的跳法只有下列两种:(1)青跬跳3次到达D点,有ABCD,AFED 2种跳法:(2)青蛙一共跳5次后停止,那么,前3次的跳法一定不能到达D,只能到达B或F,则共有AFEF,ABA…
题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级台阶共有多少种跳法? 题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶...也可以一次跳n级台阶.求该青蛙跳上一个n级台阶共有多少种跳法? #include<iostream> #include<math.h> using namespace std; // int jumpCase1(int n){ if(n == 1) return 1; if(n == 2) return 2; return…
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一: 1. 跳到相邻的空杯子里. 2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. 3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步,就可跳成下…
可以按照年龄的个数,设置99个桶,然后桶内处理. 青蛙跳台阶,每次1阶或者2阶,就是fib数 如果每次1到n阶,那么归纳法可得,是2^(n-1) 另外1*2 覆盖 2*n个矩阵的问题,仍然是Fib数. 求出一个数字里面有多少个1.一般的方法是用1来移位并且比较.但是也有巧妙的方法是,每次-1然后跟原来的数字&,能够消去一个1. 这种方法,很多题目都可以用. 有两个数,要改变多少位,可以让两个数字一样. 解法:先求出异或,然后统计这个异或结果里面的1就可以了. 浮点数比较 用"==&quo…
一仅仅青蛙一次能够跳上1级台阶,也能够跳上2级--它也能够跳上n级. 求该青蛙跳上一个n级的台阶总共同拥有多少种跳法. 分析: 这是一个斐波拉契数列的引申问题,先来看看斐波拉契数列: n<=1,    f(n)=1; n>=2,    f(n)=f(n-1)+f(n-2); 假设这个题变一下"一仅仅青蛙一次能够跳上1级台阶.也能够跳上2级.求该青蛙跳上一个n级的台阶总共同拥有多少种跳法."就成了典型的斐波拉契数列问题了. 回过头来看这个题,貌似没有头绪.怎么办,採用最笨的方…
题目描述 思路分析 Java代码 代码链接 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路分析 其实就是斐波那契数列, f(1)=1 f(2) =2 ,n= 3时,两种情况: 青蛙先跳一个台阶,后面还有两个台阶,所以跳法就为f(2), 青蛙先跳两个台阶,后面还有1个台阶,所以跳法就为f(1), 综上 n=3 时 跳法为f(1)+f(2) Java代码 public class Offer010_2 { pub…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 问题分析 我们将跳法个数y与台阶数n视为一个函数关系,即y=f(n).首先从第一级开始,当n=1时,只有一种跳法,即f(1)=1.当有两级台阶时,有两种跳法,跳两个一阶,或直接跳两阶,共有两种解法,即f(n)=2. 当n>2时,对于n级台阶而言,每次只能选跳一阶或者二阶中的一种,无论是哪一种,都只有唯一的选择.故当跳一阶的时候,跳法和f(n-1)的跳法个数相同,当跳二…
1. 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 2. 思路和方法 青蛙每一次跳跃只有两种选择:一是再跳1级阶梯到达第n级阶梯,此时小青蛙处于第n-1级阶梯:或者再跳2级阶梯到达第n级阶梯,此时小青蛙处于n-2级阶梯.于是,n级阶梯的跳法总是依赖于前n-1级阶梯的跳法总数f(n-1)和前n-2级阶梯的跳法总数f(n-2).因为只有两种可能性,所以,f(n)=f(n-1)+f(n-2): 递推公式f(n)=f(n…
题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: 假设有n级台阶,那么第一步就要分为跳一步和跳两步: 跳一步,那么接下来就是跳n-1: 跳两步,那么接下来就是跳n-2: 所以,总数可以认为是f(n-1)+f(n-2). 主要代码: def frog(num): if num <= 2: return num t1, t2 = 1, 2 for _…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 暴力枚举(自顶向下递归): 若台阶数小于等于0,返回0: 若台阶数为1,返回1:(1) 若台阶数为2,返回2:(1,1),(2) 否则,返回F(n-1)+F(n-2);(因为下一步只能是跳1级或者跳2级) 备忘录算法(自顶向下递归): 上面的方法包含大量重复计算,这里利用Map来记录计算过的结果,以减少计算次数. 迭代法(自底向上迭代,也许也算动态规划吧): 拿…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果).   题解: 说俗一点,就是找规律: 不不,首先,我们分析一下,青蛙第一次可以跳一步,则其跳剩下的n-1个台阶的方法数为:f(n-1); 也可以跳两步,则其跳剩下n-2个台阶的方法数为:f(n-2); 故跳n台阶的方法为f(n-1) + f(n-2);   class Solution { public: int jumpFloor(int number) { ) ;…
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 思路 动态规划 代码 class Solution { public int numWays(int n) { if(n==0) return 1; int[] ans = new int[n+1]; ans[0]=1; ans[1]=1; for(int i =2;i<=n;i++){ ans…
题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一 1. 跳到相邻的空杯子里. 2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. 3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步,就可跳成该局…
题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一 1. 跳到相邻的空杯子里. 2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. 3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步,就可跳成该局…
题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示: 0 <= n <= 100 思路 同 [剑指Offer]面试题10- I. 斐波那契数列 代码 时间复杂度:O(n) 空间复杂度:O(1) class Solution { public: int…
10- I. 斐波那契数列 方法一 Top-down 用递归实现 def fibonacci(n): if n <= 0: return 0 if n == 1: return 1 return fibonacci(n-1) + fibonacci(n-2) 不过这种方法在leetcode上超时了. 方法二 Bottom-up 用循环实现 class Solution: def fib(self, n: int) -> int: if n <= 0: return 0 if n == 1…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示: 0 <= n <= 100 1.思路 青蛙到第i个台阶,有两种方式,第一种从第i-1个台阶到达,第二种从第i-2个台阶到达 所以有pre[i] = pre[i-1]+pre[i-2]; 2.代码…
青蛙跳杯子 题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一: 1. 跳到相邻的空杯子里. 2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. 3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步…