矩形覆盖
题目描述
我们可以用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; }