【剑指offer】python实现矩形覆盖

python实现矩形覆盖

  • 题目描述
  • 思路
  • AC代码

题目描述

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

思路

这是一道递归题,首先我们可以列举n=1,2,3,4时的情形观察一下规律(显然n=0时,为0)
【剑指offer】python实现矩形覆盖_第1张图片
可以明显看到f(n)=f(n-1)+f(n-2)

AC代码

class Solution:
    def rectCover(self, number):
        # write code here
        if number == 0:
            return 0
        tempArray = [1,2]
        if number >= 3:
            for i in range(3,number+1):
                tempArray[(i+1)%2] = tempArray[0] + tempArray[1]
        return tempArray[(number+1)%2]

你可能感兴趣的:(【剑指offer】python实现矩形覆盖)