题目要求
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形,请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?
思路
采用动归的方式。
问题:覆盖的方法个数。
状态F(i):覆盖2i的矩形的方法个数。
转移方程:F(i):F(i-1)+ F(i-2)
代码实现
class Solution {
public:
int jumpFloor(int number) {
int f1 = 1;
int f2 = 2;
int f;
if (number == 0)
{
return 0;
}
if (number == 1)
{
return f1;
}
if (number == 2)
{
return f2;
}
for (int i = 3; i <= number; i++)
{
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
};