面试题:矩形覆盖
2018-06-19 本文已影响0人
小歪与大白兔
题目描述:
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路:
f(n) = 0 n<=0
f(n) = 1 n==1
f(n) = 2 n==2
f(n) = f(n-1) +f(n-2) n>2
image.png
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
if number <= 0:
return 0
if number == 1:
return 1
if number == 2:
return 2
a = 1
b = 2
while number > 2 :
temp = a
a = b
b = temp + b
number = number - 1
return b