题目地址
题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路
-
动态规划
-
递推公式
f(1) = 1 f(2) = 2 f(n) = f(n-1) + f(n-2)
-
即前两项为 1 和 2 的斐波那契数列
与前两次做的题一样
同样用地动态规划的思想
剑指offer刷题笔记——跳台阶
code
class Solution {
public:
int rectCover(int number) {
if (number == 0)
return 0;
int f = 1;
int g = 2;
for (int i = 2; i <= number; i++) {
g = g + f;
f = g - f;
}
return f;
}
};