zoukankan      html  css  js  c++  java
  • 剑指offer10-矩形覆盖

    题目描述

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

    比如n=3时,2*3的矩形块有3种覆盖方法:

    示例

    输入       4

    返回值   5

    知识点回顾

    递归

    这题就是青蛙跳,“一只青蛙一次可以跳上1级台阶,也可以跳上2级”,等价于本题矩阵要么是竖着放的1个,要么是横着放的2个

    f(n) = f(n-1) + f(n-2); f(1)=1; f(2)=2

    代码

    #用数组实现
    #
    -*- coding:utf-8 -*- class Solution: def rectCover(self, number): # write code here rec=[0,1,2] while number>=len(rec): rec.append(rec[-1]+rec[-2]) return rec[number]
    #动态规划
    #
    -*- coding:utf-8 -*- class Solution: def rectCover(self, number): # write code here if(number==1 or number==2 or number ==0): return number a=1 b=2 for i in range(3,number+1): c=a+b a=b b=c return c
  • 相关阅读:
    线性表
    面试题
    进程与线程的区别
    双亲委派模型&动态生成Java类
    springboot优势
    Python3数据结构
    GC算法
    JVM的跨平台特性
    HashMap#put (K key, V value)过程白话文
    java内存模型
  • 原文地址:https://www.cnblogs.com/foolangirl/p/13987005.html
Copyright © 2011-2022 走看看