剑指offer 编程题(9):矩形覆盖

来源:互联网 发布:300036超图软件 股吧 编辑:程序博客网 时间:2024/06/05 11:53

题目描述

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

确实是斐波那契序列,仔细想一想这个覆盖矩形的与之前青蛙跳台阶实际上是一样的,矩形选择横向着放就是跳两个台阶,选择纵向着放就是跳一个台阶。

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 result = 0;        int f1 = 1;        int f2 = 2;        while(number > 2)        {            result = f1 + f2;;            f1 = f2;            f2 = result;            number--;        }        return result;    }};
原创粉丝点击