跳台阶,变态跳台阶,矩阵覆盖

一、跳台阶

1、问题描述

跳台阶:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

2、代码

class Solution:
    def jumpFloor(self, number):
        # write code here
        a = 1
        b = 1
        for i in range(number):
            a, b = b, a+b
        return a

二、变态跳台阶

1、问题描述

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

2、代码

class Solution:
    def jumpFloorII(self, number):
        # write code here
        a = 1
        if number==1:
            return 1
        while number>1:
            a = a*2
            number = number-1
        return a

三、矩阵覆盖

1、问题描述

矩形覆盖:
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

2、代码

class Solution:
    def rectCover(self, number):
        # write code here
        if number <=2:
            return number
        a = 1
        b = 2
        c = 0
        for i in range(number-2):
            c = a+b
            a = b
            b = c
        return c

原文地址:https://www.cnblogs.com/welan/p/10659475.html

时间: 2024-10-25 19:12:54

跳台阶,变态跳台阶,矩阵覆盖的相关文章

[剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖

跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) { if(number == 1) return 1; if(number == 2) return 2; int n1 = 1; int n2 = 2; int rtn = 0; for(int i = 3; i <= number; i++) { rtn = n1 + n2; n1 = n2;

【剑指Offer】跳台阶&amp;变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 当n = 1时,有一种跳法.f(1) = 1 当n = 2时,有两种跳法,跳两次,一次跳一级.跳一次,直接跳两级. f(2) = 2 当n > 2时,第一次跳一级,这时跳法数目就等于后面n - 1级的跳法数目,第一次跳两级,这时跳法数目就等于后面n - 2级的跳法数目.因此f(n) = f(n-1) + f(n-2).结果为斐波那契数列. 解法一.递归 (时间复杂度随

剑指OFFER之变态跳台阶(九度OJ1389)

题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 解题思路: 这道题目跟之前的跳台阶大同小异,只是跳台阶的阶数从1变到了n,也就是说,不再是跳一下或者跳两下的问题,而是跳n下的问题.那么解题的思路显然还得逆向分析,我们

变态跳台阶(递归算法)

台阶的级数:1,2,3,4,5,6..... 对应的跳法:1,2,4,8,16,32.... 最终结论 在n阶台阶,一次有1.2....n阶的跳的方式时,总得跳法为: | 1 ,(n=0 ) f(n) = | 1 ,(n=1 ) | 2*f(n-1) ,(n>=2) package suanfati; /* * 变态跳台阶 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级. * 求该青蛙跳上一个n级的台阶总共有多少种跳法. * 递归算法 */ public class Hig

[剑指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)中跳法,第一次跳出二阶台阶后.

剑指offer源码系列-变态跳台阶

题目1389:变态跳台阶 时间限制:1 秒内存限制:32 兆特殊判题:否提交:1906解决:1102 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出: 32 解法分析: 分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙

跳台阶问题(变态跳台阶)的三种解法

题目1:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级.求总共有多少总跳法,并分析算法的时间复杂度. 们把n级台阶时的跳法看成是n的函数,记为f(n).当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1):另外一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2).因此n级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2). 我们把上面的分析用一个公式总结如下: / 

(原)剑指offer变态跳台阶

变态跳台阶 时间限制:1秒空间限制:32768K 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析一下明天是个斐波那契数列,我们一步一步退出其通项公式. 设台阶数为n, 总跳法为jumps n          jumps 1 1 2 2 3 4 4 8 5 16 现在猜测其通项公式为 fbonicc(n) = 2 * fbonicc(n - 1) 列出4的全部跳法 5的全部跳法 1111 1111 (1) 2  11

跳台阶问题(递归、动态规则、变态跳台阶)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析:青蛙每次只有一阶或者两阶两种跳法,那么: 假设第一次跳的是一阶,那么剩下的n-1个台阶,跳法是f(n-1) 假设第一次跳的是两阶,那么剩下的n-2个台阶,跳法是f(n-2) 由上面两种假设可得:f(n) = f(n-1) + f(n-2) 由实际情况可知:f(1) = 1,f(2) = 2 最终得出的是一个斐波那契数列: |  1,n = 1 f(n)   =       |  2, n =