美文网首页
斐波那契数列之矩形覆盖

斐波那契数列之矩形覆盖

作者: 以码为荣 | 来源:发表于2019-04-24 00:26 被阅读0次

一、题目

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

二、思路

以2x8的矩形为例。示意图如下:

斐波那契数列之矩形覆盖

我们先把2x8的覆盖方法记为f(8)。用第一个1x2小矩阵覆盖大矩形的最左边时有两个选择,竖着放或者横着放。当竖着放的时候,右边还剩下2x7的区域,这种情况下的覆盖方法记为f(7)。接下来考虑横着放的情况。当1x2的小矩形横着放在左上角的时候,左下角和横着放一个1x2的小矩形,而在右边还剩下2x6的区域,这种情况下的覆盖方法记为f(6)。因此f(8)=f(7)+f(6)。此时我们可以看出,这显然是斐波那契数列。

2、代码

public  int rectCover(int number) {

        if(number <= 2){

            return number;

        }

        int first = 1, second = 2, third = 0;

        for(int i = 3; i <= number; i++){

            third = first + second;

            first = second;

            second = third;

        }

      return third;

};

相关文章

网友评论

      本文标题:斐波那契数列之矩形覆盖

      本文链接:https://www.haomeiwen.com/subject/ajiigqtx.html