题意:
    用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,从同一个方向看总共有多少不同的方法?
        

方法一:
动态规划

思路:
        找规律:
        n=1时,种类数是1;
        n=2时,种类数是2;
       n=3时,种类数是3;
      .....
        得到状态转换函数:当前项的值等于前两项之和。

特例:n=0时,种类数是0。



class Solution {
public:
    int rectCover(int number) {
        if(number==0||number==1||number==2)
            return number;
        int x=1,y=2,z;
        for(int i=3;i<=number;i++){//本项等于前两项之和
            z=x+y;//求和
            x=y;//更新
            y=z;
        }
        return z;
    }
};


时间复杂度:
空间复杂度:


方法二:
记忆化递归

思路:
        当前项的值等于前两项之和。
        因此,递归函数为:f(n)=f(n-1)+f(n-2).

class Solution {
public:
    int a[40]={0};
    int rectCover(int number) {
        if(number==0||number==1||number==2)//递归结束条件
            return number;
        if(a[number])//记忆化搜索
            return a[number];
        return a[number]=rectCover(number-1)+rectCover(number-2);//当前项的值等于前两项之和
    }
};



时间复杂度:
空间复杂度: