10. 矩形覆盖

    xiaoxiao2024-11-07  79

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

    思路:还是斐波那契数列思路。考虑一下递推的关系,求n个矩形的方法数为s(n),想象如果第一个矩形是横着放的,那么此时的方法数就是s(n-1);如果第一个矩形是竖着放的,那么要想铺满,那么也必须有另一个矩形也竖着放,那么这时候方法数就是s(n-2)。综合起来说,s(n) = s(n-1) + s(n-2);

    class Solution { public: int rectCover(int number) { if (number <= 0) return 0; if (number <= 2) return number; return rectCover(number-1) + rectCover(number-2); } };

     

    最新回复(0)