老卫带你学---剑指offer刷题系列(10.矩形覆盖)

10.矩形覆盖

问题:

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

比如n=3时,2*3的矩形块有3种覆盖方法:
在这里插入图片描述

解决:

思想:

这道题还是斐波那契的思想

python代码:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.dynamic=[None]*100
    def rectCover(self, number):
        # write code here
        result=self.dynamic[number]
        if(result==None):
            if(number==0):
                result=0
            elif(number==1):
                result=1
            elif(number==2):
                result=2
            else:
                result=self.rectCover(number-1)+self.rectCover(number-2)
            self.dynamic[number]=result
        return result
发布了160 篇原创文章 · 获赞 30 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/yixieling4397/article/details/104878134