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

it2022-05-05  170

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析:同样是典型的递归问题。如下图所示,当尝试对2×n的大矩阵进行覆盖时,如果第一块小矩阵竖着放,相当于递归的求对2×(n-1)的矩阵的覆盖方法。 如果第一个矩阵横着放,则相当于求对2×(n-2)的矩阵的覆盖方法。得递推公式f(n)=f(n-1)+f(n-2)。考虑边界条件。代码如下: 题 1 public class Solution { 2 public int RectCover(int target) { 3 if(target==0||target==1){ 4 return 1 ; 5 } 6 if(target==2){ 7 return 2 ; 8 } 9 int temp1 = 1 ,temp2 = 2 ,res = 0 ; 10 for(int i = 3 ; i <=target ;i++){ 11 res = temp1+temp2 ; 12 temp1 = temp2 ; 13 temp2 = res ; 14 } 15 return res ; 16 } 17 }

 

转载于:https://www.cnblogs.com/huntertoung/p/4753488.html


最新回复(0)