思路:还是类比跳台阶问题,对最后只剩下的面积进行分类,注意不要算重复就行了。
class Solution {
public:
int rectCover(int number) {
if(number<=0) return 0;
if(number==1) return 1;
int*a = new int[number+1];
a[0] = 1;//最后一步剩下2*2面积,与最后一步只剩2*1面积摆放方式不能相同,否则算重复
a[1] = 1;
for(int i=2;i<=number;i++)
{
a[i] = a[i-1] + a[i-2];
}
return a[number];
}
};