码迷,mamicode.com
首页 > 其他好文 > 详细

【剑指Offer】矩形覆盖

时间:2015-09-16 06:26:10      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:牛客网   剑指offer   矩形覆盖   斐波那契数列   

问题描述

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

解题思路

n=1 - 只有横放一个矩形一种解决办法
n=2 - 有横放一个矩形,竖放两个矩形两种解决办法
n=3 - n=2的基础上加1个横向,n=1的基础上加2个竖向
n=4 - n=3的基础上加1个横向,n=2的基础上加2个竖向
·
·
·
n=n - n = f(n-1) + f(n-2)

斐波那契数列变种。。。。。

代码实现

class Solution {
public:
    int rectCover(int number) {
        if (number == 0)
            return 0;
        else if(number == 1){
            return 1;
        }
        else if (number == 2){
            return 2;
        }

        return rectCover(number - 1) + rectCover(number - 2);
    }
};

发现碰到这种问题,可以通过从n=0或1开始慢慢先算几个(跟初高中找规律填数一样),来找出相连两个数或相连的几个数之间的关系。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【剑指Offer】矩形覆盖

标签:牛客网   剑指offer   矩形覆盖   斐波那契数列   

原文地址:http://blog.csdn.net/zgljl2012/article/details/48481343

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!