问题描述:
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路分析:
我们任然使用找规律的方法进行解决问题。
n=1时,总共有1种方法,f(1)=1;
n=2时,总共有2种方法,f(2)=2;
n=3时,总共有3种方法,f(3)=3;
n=4时,总共有5种方法,f(4)=5;
......
我们发现一个规律,这又是斐波那契数列(当然n=0时需要0种方法)
代码实现如下:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
if number == 0:
return 0
num = [1,1]
while len(num) <= number:
num.append(num[-1]+num[-2])
return num[-1]