天天看点

剑指offer矩形覆盖

题目描述

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

思路

和跳台阶那道题是一样的

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        if number<=0:
            return 0
        if number==1:
            return 1
        if number==2:
            return 2
        first=1
        last=2
        sum1=0
        while number>2:
            sum1=first+last
            first=last
            last=sum1
            number-=1
        return sum1
           

测试用例

if __name__=='__main__':
    s=Solution()
    n=4
    print(s.rectCover(n))