我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
IDEA
这种题就是找规律,找通式,用递归计算。
f(1)=1; f(2)=2;
f(3)在f(2)基础上加,可初步确定f(n)=f(n-1)+f';
多计算n=4,5..情况推出f(n)=f(n-1)+f(n-2)
换一种思路:
若第一次摆放的2*1的矩形,还剩n-1块,共f(n-1)中方法;
若第一次摆放的1*2的矩形,那么第二块的摆放方法也确定了,是1*2,则还剩n-2块,共f(n-2)中方法;
所以f(n)=f(n-1)+f(n-2)
CODE
public class Solution {
public int RectCover(int target) {
if (target < 1) {
return 0;
} else if (target == 1 || target == 2) {
return target;
} else {
return RectCover(target-1) + RectCover(target-2);
}
}
}