面试题10.4:矩形覆盖

作者: 凌霄文强 | 来源:发表于2019-01-04 15:01 被阅读0次

题目描述

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

知识点

递归,循环


Qiang的思路

对于这道题,小矩形是21的,大矩形是2n的,这就意味是每个小矩形可以竖着放,一次性就把2行给占满了,或者横着放,这样肯定相邻行的也得横着放了。换句话说,如果我们在考虑大矩形的第i列时(此时前i-2列都已放满),我们可以看下第i-1列有没有矩形,如果i-1有,那么第i列只能竖着放一个小矩形,如果没有,那么第i列和第i-1列可以合起来横着放两个小矩形(不能竖着放,竖着放和第i-1列有的情况就一样了)。

基于这个思想,我们发现,当大矩形有n列时,总共的方法数为:

f(n)=f(n-1)+f(n-2)

好啊,又是个斐波那契数列。那代码直接就出来了。

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        f=[1,1]
        for i in range(2,number+1):
            a=f[1]
            f[1]=f[1]+f[0]
            f[0]=a
        return f[1] if number!=0 else 0

至于这个题当n为0时返回0完全是出题人这样规定的,实际认为是1也不是不可,毕竟啥都不放本身就是一种方法嘛。


作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
个人网站:https://www.myqiang.top

相关文章

  • 面试题10.4:矩形覆盖

    题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形...

  • 剑指offer【10~19】

    题目链接: 剑指offer 10-19 目录: 10.1 斐波那契数列10.2 矩形覆盖10.3 跳台阶10.4 ...

  • 矩形覆盖

    《剑指offer》面试题10(题目二)相关题目:矩形覆盖 题目:我们可以用2 x 1的小矩形横着或者竖着去覆盖更大...

  • 面试题:矩形覆盖

    题目描述: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩...

  • 面试题:矩形覆盖

    【题目】我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,...

  • 矩形覆盖

    题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形...

  • 矩形覆盖

    https://www.nowcoder.com/practice/72a5a919508a4251859fb2c...

  • 矩形覆盖

    描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总...

  • 矩形覆盖

    ?环境:牛客的编译环境?语言:JavaScript☕️难点:画图时并没有找到规律,其实下次我可以思考久一点。?题目...

  • 矩形覆盖

    题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,...

网友评论

    本文标题:面试题10.4:矩形覆盖

    本文链接:https://www.haomeiwen.com/subject/urahrqtx.html