我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:
假设n[i]表示覆盖一个2*i的大矩阵,如果i为奇数那么n[i]=n[i-1]+n[i-2],如果i为偶数那么n[i]=2*n[i-2]+n[i-3]
代码如下:
# -*- coding:utf-8 -*-
#python 2.7.3
class Solution:
def rectCover(self, number):
# write code here
if number<4:
n=[0]*(4)
else:
n=[0]*(number+1)
n[1]=1
n[2]=2
n[3]=3
if number >3:
for i in range(4,number+1):
if i%2==0:
n[i]=2*n[i-2]+n[i-3]
elif i%2==1:
n[i]=n[i-1]+n[i-2]
return n[number]