题解 | #矩形覆盖#

矩形覆盖

https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6

class Solution {
public:
    int rectCover(int number) {
       //我们用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用2x1的小矩形无重叠地覆盖一个2xn的大矩形,从同一个方向看总共有多少种不同的方法?
        if(number == 0)
        {
            return 0;
        }
        if(number == 1){
            return 1;
        }
        if(number == 2){
            return 2;
        }
        int fn_1 = 2;
        int fn_2 = 1;
        int fn = fn_1 + fn_2;
        for(int i  = 3;i<=number;i++)
        {
           fn = fn_1 + fn_2;
           fn_2 = fn_1;
           fn_1 = fn;
        }
        return fn; 

    }

};

本题是一个特殊的斐波拉契数列。

n = 1, f(n) = 1;

n = 2, f(n) = 2;

n >= 3, f(n) = f(n-1) + f(n-2);

记住就好了。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务