矩阵覆盖(十)

题目描述:

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

代码(已在牛客上 AC)

当一块矩形, 竖着放, 那么总共覆盖的方法为 ​​f(n - 1)​​​ 种; 如果第一块矩形横着放, 总共的覆盖方法为 ​​f(n - 2)​​​ 种, 那么总共有 ​​f(n) = f(n - 1) + f(n - 2)​​ 种, 即斐波拉契数列.

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