剑指面试题10(题目四): 矩形覆盖

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

 竖放时f(n-1) + 横放时只能f(n-2).符合斐波那契数列: f(n) = f(n-1) + f(n-2)

牛客网AC代码:

class Solution {
public:
    int rectCover(int number) {
        if(number <= 0)
           return 0;
        else if(number == 1)
           return 1;
        else if(number == 2)
            return 2;
        int c,a = 1,b = 2;
        for(int i=2;i<number;i++){
            c = a+b;
            a = b;
            b = c;
        }
        return b;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_29762941/article/details/85494531