题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路
下面这个图只列举了3种情况,其中当n的3的时候,第一种方法可以看作是RectCover(1),后两种方法列举就可以看作是RectCover(2),当继续寻找n=4,n=5的时候,会发现满足RectCover(n)=RectCover(n-1)+RectCover(n-2),此时n>2。这就可以当成斐波那契数列解决。
AC代码
public class Solution {
public int RectCover(int target) {
if(target<1)
return 0;
if(target==2||target==1)
return target;
return RectCover(target-1)+RectCover(target-2);
}
}