10.矩形覆盖 Java

题目描述

我们可以用2**1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?

 

思路

矩形覆盖

倒数第一列的放法

其实,倒数第一列要么就是1个2**1的矩形竖着放,要么就是2个横着放的。如果是竖着放的,那么剩下的就是n-1个小矩形,放法是F(n-1)种;如果是横着放的,放法就是F*(n-2)。

这样子看,其实这个就是前面的跳台阶问题。

那么就同样有三种解法,此处只写出一种。

若n==1,则返回1;

若n==2,则返回2;

否则,返回F(n-1)+ F(n-2)

代码

public class Solution {
    public int RectCover(int target) {
        if(target <= 2){
            return target;
        }else{
            return RectCover(target-1)+RectCover(target-2);
        }
    }
}
posted @ 2019-03-13 14:33  飞晨信息  阅读(197)  评论(0编辑  收藏  举报