【10】矩形覆盖

来源:互联网 发布:淘宝网汽车贴纸 编辑:程序博客网 时间:2024/05/22 13:54

【10】矩形覆盖

  • 时间限制:1秒
  • 空间限制:32768K

题目描述

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

题目链接:牛客网题目链接点击

提交代码

#include<stdio.h>class Solution {public:    int rectCover(int number) {             if( number==0 ) return 0;        if( number==1 ) return 1;        if( number==2 ) return 2;        int a2=2, a1=1, sum=0;        for(int i=3; i<=number; i++)        {            sum=a2+a1;            a1=a2;            a2=sum;        }        return sum;    }};//思路:分为竖着和横着,竖着一次走一格,横着一次走两个,均只有一种方法。//  因此,通式为f(n)=f(n-1)+f(n-2);

改良方法:

class Solution {public:    int rectCover(int number) {        if(number<1) return 0;        int a=1,b=0;        while(number--)        {            a=a+b;            b=a-b;        }        return a;    }};
0 0