剑指offer 10 矩形覆盖

题目描述

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

思路:这个题是"斐波那契数列"的题目,借此机会总结一下"斐波那契"系:

公式:f(n) = f(n-1) + f(n-2) 如果一个数列中的第n项的值为前两项的值的和,那么就是"斐波那契"了.
适用:如果第n-1种情况中的任意一种情况都可以"扩展一下"到第n种情况,并且:第n-2种情况中的任意一种情况 “扩展两下” 都可以到第n种情况,那么,就可以用最基本的“斐波那契”的公式了。。。。注意,是任意一种情况哦!
这道题中,对于n=5来说,任意的n=4中的一种情况多加1,就可以满足n=5的条件,任意一种n=3中的一种情况多加2,就可以满足n=5的条件,因此,满足“斐波那契”数列。
class Solution {
public:
    int rectCover(int number) {
        if(number==0) return 0;
        vector<int> v;
        v.push_back(1);
        v.push_back(2);
        for(int i=2;i<number;i++){
            int result = v[i-1]+v[i-2];
            v.push_back(result);
        }
        return v[number-1];
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值