题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
代码实现
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
if number<=2:
return number
result = [1,2]
for i in range(number-2):
result.append(result[-1]+result[-2])
return result[-1]
这个题主要是通过2*1,2*2,2*3,2*4的大矩阵用2*1的小矩阵覆盖,得到这4个大矩阵各需几个小矩阵,进而找到规律。
n=1时,需要1个
n=2时,需要2个
n=3时,需要3个
n=4时,需要5个
....
2*n所需的个数=2*(n-1)所需的个数+2*(n-2)所需的个数。
编程风格类似前边的斐波那契数列,变态跳台阶。