本文最后更新于:2020年6月28日 下午
题目描述:
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
实现如下:
//有两种放置方法
//1.左边竖着放一个,则还剩下2*(n-1)
//2.左上角横着放一个,相应左下角也横着放一个,则还剩下2*(n-2)
//f(n) = f(n-1) + f(n-2)
//特殊情况:不存在时返回0;2*1时只有竖着放一种情况;2*2时两种情况
class Solution
{
public:
int rectCover(int number)
{
if (number < 1) return 0;//特殊情况
else if(number == 1) return 1;
else if (number == 2) return 2;
else
{
int a = 1, b = 2, tmp = 0;
for (int i = 3; i <= number; ++i)
{
tmp = a + b;
a = b;
b = tmp;
}
return tmp;
}
}
};
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!