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; } };