思路:如上图,用2x1的去覆盖2x10的矩形,让2x10为f(10),第一步有两种方法:1,2x1的竖着放在第一列,则还剩下2x9的矩形,记为f(9);2,2x1的横着放在第一行,那么第二行只能横着放一个,则还剩下2x8的矩形,记为f(8);则f(10)=f(9)+f(8)。
int rectCover(int n) {
if(n<=2)
return n;
int minN=1;
int maxN=2;
int N = 0;
for(int i=3;i<=n;i++)
{
N = minN+maxN;
minN=maxN;
maxN=N;
}
return N;
}