1. 矩形覆盖问题的思路是,从左到右横着放/竖着放影响右侧空间的灵活度

  1. 竖着放的话灵活度是7,横着放的话 限定死了下面那个要横着放 右侧灵活度为6

图片说明
2. f(n)=f(n-1)+f(n-2)
图片说明
3. 写代码,但是很不幸,内存超限了,而且非常严重

class Solution {
public:
    int rectCover(int number) {
        //1个1种  2个2中 三个第一个竖着放 有两种  第一个横着放 只有一种
         if(number==1)
            return 1;
        else if(number==2)
            return 2;
        else
            return(rectCover(number-1)+rectCover(number-2));
    }
};

图片说明
4. 试试递推
图片说明
5. 效率说明
图片说明

2. 源代码

class Solution {
public:
    int rectCover(int number) {
          int sum=0;
        //1个1种  2个2中 三个第一个竖着放 有两种  第一个横着放 只有一种
         if(number<=3)
            return number;

        else
        {
            int a=2,b=3;
            for(int i=3;i<number;i++)
            {
                sum=a+b;
                a=b;
                b=sum;
            }
        }
        return sum;
    }
};