您的位置:首页 > Web前端

剑指Offer--10.矩形覆盖

2017-09-17 21:40 573 查看


题目描述:

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?


python代码:

# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
if number <=0:
return 0
a = 1
b = 2
if number == 1:
return 1
for _ in xrange(number - 1):
a,b = b,a+b
return a


解析:

这道题类似与动态规划,要从简单的情况考虑,然后扩展。
对于2*1的矩形,只有一种方式;
对于2*2的矩形,有2种方式,都横着排和都竖着排。
对于3*1的矩形,就是2*1和2*2的加和 f(3) = f(1) + f(2)
以此类推,f(n) = f(n-1) +f(n-2) 又是裴波那契数列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: