剑指offer-10
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解释: 这个就是斐波那契数列的一个应用
因为当新增加的矩形横着放 就相当于 F【n-2】 当竖着放相当于 F【n-1】
![](https://img2018.cnblogs.com/blog/1324057/201904/1324057-20190422201312489-1010966012.png)
1 # -*- coding:utf-8 -*- 2 class Solution: 3 def rectCover(self, number): 4 # write code here 5 if number == 0: 6 return 0 7 if number == 1: 8 return 1 9 if number == 2: 10 return 2 11 if number > 2: 12 result = [0] * (number) 13 result[0], result[1] = 1,2 14 for i in range(2,len(result)): 15 result[i] = result[i-1] + result[i-2] 16 return result[-1]