第四十五题 动态规划 考虑往后递归的递归的条件
class Solution {
public:
int rectCover(int number) {
// 拼接完number个1*2 的矩阵 使其拼完是个矩阵2*n
// 因为限定了 拼好的矩阵 高度还是2,所以难度降低了,只能在拓展长度的时候变
// 前两种比较特殊 因为如果结果是2,那么可以叠加起来
if(number <=2) return number;
int *a=new int[number+1];
a[0]=1;a[1]=1;a[2]=2;
for(int i=3;i<=number;i++)
// 比他少一块的 直接在一边加一块 所以a[i-1]
// 比他少两块的,因为是两个1*2 所以两个叠起来是2*2 所以 差两个的时候 可以再用不同的两个叠加方式算进去
a[i]=a[i-1]+a[i-2];
// for(int i=3;i<=number;i++)
// {
// cout<<a[i]<<endl;
// }
return a[number];
}
};
public:
int rectCover(int number) {
// 拼接完number个1*2 的矩阵 使其拼完是个矩阵2*n
// 因为限定了 拼好的矩阵 高度还是2,所以难度降低了,只能在拓展长度的时候变
// 前两种比较特殊 因为如果结果是2,那么可以叠加起来
if(number <=2) return number;
int *a=new int[number+1];
a[0]=1;a[1]=1;a[2]=2;
for(int i=3;i<=number;i++)
// 比他少一块的 直接在一边加一块 所以a[i-1]
// 比他少两块的,因为是两个1*2 所以两个叠起来是2*2 所以 差两个的时候 可以再用不同的两个叠加方式算进去
a[i]=a[i-1]+a[i-2];
// for(int i=3;i<=number;i++)
// {
// cout<<a[i]<<endl;
// }
return a[number];
}
};