剑指offer -矩形覆盖

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

解法:斐波那契数列
n = 1,一种方法
n = 2, 两种方法(横着,竖着)
n = 3, 剩下2*1时, 剩下2*2时

n = i,剩下2*i-1时, 剩下2*i-2时

class Solution {
public:
    int rectCover(int number) {
        if(number<=2) return number;
        int a = 1, b = 2;
        for(int i=3;i<=number;i++)
        {
            b = a + b;
            a = b - a;
        }
        return b;
    }
};
发布了55 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38204302/article/details/104359018