python刷题日记:剑指offer-矩形覆盖

题目描述

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

解题思路

这道题和上面题跳台阶类似,你列举出前几个状态值后,发现还是斐波那契数列,这里就不多说了。

代码

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        f1 = 1
        f2 = 1
        i = 2
        if number==0:
            return f1-1
        elif number==1:
            return f2
        while i<=number:
            f2+=f1
            f1=f2-f1
            i+=1
        return f2


你可能感兴趣的:(剑指offer)