矩形覆盖

题目描述

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

思路分析

  • 同样类似斐波那契数列,这些问题我们可以利用数学归纳法来找到其中的规律,,比如2x8覆盖记为F(8),当用一个块在最左边去覆盖时,竖着放,右边有2x7,就是F(7),当横着方式,右边只有2x6,记为F(6),最终 我们得知F(8) = F(7) + F(6),也是就斐波那契数列的应用。

 

代码

public class Solution {
    public int RectCover(int target) {
        if(target <= 2){
            return target;
        }
        int a = 1;
        int b = 2;
        int tem = 0;
        for(int i = 3; i <= target; i++){
            tem = a;
            a = b;
            b = a + tem;
        }
        return b;
    }
}

 

 

posted @ 2020-04-13 10:53  Coding-Liu  阅读(250)  评论(0)    收藏  举报