Fork me on GitHub

剑指Offer之矩形覆盖

题目描述:

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

解题思路:

时间复杂度:$O(n)$, 空间复杂度:$O(n)$.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int rectCover(int number) {
vector<int> vec(number + 1);
vec[0] = 0;
vec[1] = 1;
vec[2] = 2;

for(int i = 3; i <= number; i++)
vec[i] = vec[i - 1] + vec[i - 2];

return vec[number];
}
};