class Solution {
    //题目说得大矩阵是2*n的,小矩阵是2*1;然后多少种改变,可以发现其改变拆分成很多个的两个小矩阵的改变(倒一下),改变方式相同,只是位置不同,所以可以分改变的个数不同情况讨论,同时往下加个数,递归计算;
public:
    int res=1;

    int rectCover(int number) {
        if(number == 0) return 0;

        dp(number, 1);

        return res;
    }

    void dp(int number, int start){
        if(number-start+1<2){
            return;
        }

        res  += number - start;
        for(int i = start; i<=number-1; ++i){
            dp(number, i+2);
        }
    }
};