题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩
形,总共有多少种方法?
同样也是一个斐波那契数列的应用,假设有F(n)种方法覆盖,那么当有F(n-1)种方法覆盖住之后,剩余只能用一
块小矩形竖着覆盖,当有F(n-2)种方法覆盖住之后,剩余的地方可以用两块小矩形横着放或者竖着放,但是如果
竖着放,则放置的方法包含在F(n-1)里面,因此F(n)=F(n-1)+F(n-2)。
public int RectCover(int target) {
int fpre2=1;
int fpre1=1;
if(target==0)
return fpre2;
if(target==1)
return fpre1;
int result=0;
for(int i=2;i<=target;i++){
result=fpre2+fpre1;
fpre2=fpre1;
fpre1=result;
}
return result;
}