矩形覆盖
题目描述
我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?
解题思路
- 当n<=0时,f(n)=0;
- 当n<=2时,f(n)=n;
- 当n>2时,f(n)=f(n-1)+f(n-2);
一般结论
如果用1xm的方块覆盖mxn区域,递推关系式为
f(n) = f(n-1) + f(n-m),(n > m)。
AC代码
public class Solution {
public int RectCover(int target) {
if(target < 1){
return 0;
}else if(target <= 2){
return target;
}else{
return RectCover(target-1) + RectCover(target-2);
}
}
}