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;
}
};
京公网安备 11010502036488号