您的位置:首页 > Web前端

【剑指 offer】三,矩形覆盖(java实现)

2015-08-23 23:00 381 查看

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
分析:同样是典型的递归问题。如下图所示,当尝试对2×n的大矩阵进行覆盖时,如果第一块小矩阵竖着放,相当于递归的求对2×(n-1)的矩阵的覆盖方法。
如果第一个矩阵横着放,则相当于求对2×(n-2)的矩阵的覆盖方法。得递推公式f(n)=f(n-1)+f(n-2)。考虑边界条件。代码如下:



public class Solution {
public int RectCover(int target) {
if(target==0||target==1){
return 1 ;
}
if(target==2){
return 2 ;
}
int temp1 = 1 ,temp2 = 2 ,res = 0 ;
for(int i = 3 ; i <=target ;i++){
res = temp1+temp2 ;
temp1 = temp2 ;
temp2 = res ;
}
return res  ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: