题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
class Solution:
"""
如果number == 1,那么只有1种
即
f(1) == 1
f(2) == 2
...
f(n) = f(n-1) + f(n-2)
因此跟斐波那契数列是一样的,可用递归也可用循环求解
"""
def rectCover(self, number):
if number <= 2:
return number
# return self.rectCover(number - 1) + self.rectCover(number - 2)
a, b = 1, 2
for i in range(3, number + 1):
c = a + b
a = b
b = c
return b
原文地址:https://blog.51cto.com/jayce1111/2379874
时间: 2024-11-12 15:28:55