矩形覆盖

来源:互联网 发布:定时关机软件下载 编辑:程序博客网 时间:2024/05/13 15:56

题目描述

我们可以用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;    }
0 0
原创粉丝点击