题目地址
题目描述
我们可以用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;
}
};

探讨使用2×1小矩形无重叠覆盖2×n大矩形的方法总数,通过动态规划解决,采用斐波那契数列递推公式f(n)=f(n-1)+f(n-2),附带C++实现代码。
180

被折叠的 条评论
为什么被折叠?



