您的位置:首页 > 其它

【10】矩形覆盖

2016-06-23 11:30 295 查看

【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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息