剑指:矩形覆盖

来源:互联网 发布:淘宝营销手段 编辑:程序博客网 时间:2024/04/29 10:06

题目描述

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

思路:

第一块有两种方式:横着放和竖着放
横这放对应为发f(n-2);
竖着放下一步的放方法为f(n-1);
所以总的放的方法为f(n)=f(n-1)+f(n-2);

实现:

 int rectCover(int number)    {        //迭代        if(number<1) return 0;        if(number==1) return 1;        if(number==2) return 2;        int x=1,y=2;for(int i=0;i<=number-3;i++)        {            y=x+y;            x=y-x;        }        return y;                /*直接递归        if(number<1) return 0;        if(number==1) return 1;        if(number==2) return 2;        return rectCover(number-1)+rectCover(number-2);        */    }


0 0