剑指offer - 格子覆盖

别等时光非礼了梦想. 提交于 2020-03-07 09:20:16

题目:

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

 

比如n=3时,2*3的矩形块有3种覆盖方法:

思路:

这个题其实是青蛙跳格子问题换了叙述方法,青蛙跳格子问题见:https://blog.csdn.net/qq_22498427/article/details/104708687

小格子可以一次竖着放一个,也可以横着放两个。因此就像 n 级台阶,青蛙一次可以跳两级,也可以跳一级。

class Solution:
    def rectCover(self, number):
        if number == 0:
            return 0
        ans0 = 1
        ans1 = 1
        for i in range(2,number+1):
            temp = ans0 + ans1
            ans0 = ans1
            ans1 = temp
        return ans1

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!