剑指Offer-矩形覆盖Java

♀尐吖头ヾ 提交于 2020-03-10 15:05:53

10、矩形覆盖

题目描述:
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:

思路:
找规律,递归。
target = n分为两步考虑:
1、第一次摆放一块2*1的小矩阵,则摆放方法总共为f(target - 1)
2、第一次摆放一块1*2的小矩阵,则摆放方法总共为f(target-2),因为摆放了一块1*2的小矩阵,对应下方的1*2摆放方法就确定了,所以为f(target-2)

public class Solution {
    public int RectCover(int target) {
        if(target<=0){return 0;}
        if(target==1){return 1;}
        if(target==2){return 2;}
        return RectCover(target-1)+RectCover(target-2);
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!