题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
 
比如n=3时,2*3的矩形块有3种覆盖方法:
 
 
题目链接:
 
 
分析:
与跳台阶一样。
每增加1*2,最后这1*2的铺法有两种,平行于短边 总共有 arr[n-1] 种,垂直于短边总共有 arr[n-2]种,所以铺法总共有 arr[n] = arr[n-1 ]+ arr[n-2]
 
public class Solution {
    public int RectCover(int target) {
        if(target<=0){
            return 0;
        }
        int[] arr=new int[target +2];
        arr[0]=0;
        arr[1]=1;
        arr[2]=2;
        for(int i=3;i<=target;i++){
            arr[i]=arr[i-1]+arr[i-2];
        }
        return arr[target];
    }
}

 

posted on 2020-06-04 22:04  MoonBeautiful  阅读(221)  评论(0编辑  收藏  举报