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
  • 相关阅读:
    django基础之ORM基础知识
    Centos7 搭建sonarQube
    centos7安装部署SVN
    centos7.5 SVN 搭建
    centos 7 部署 zookeeper
    centos7 发送邮件
    Centos7安装配置Gitlab-CE
    openldap 双主模式部署
    K8s一键安装
    ELK实战部署
  • 原文地址:https://www.cnblogs.com/foolangirl/p/13987005.html
Copyright © 2011-2022 走看看