(C++)剑指offer-10:矩形覆盖(递归和循环)
程序员文章站
2024-03-18 08:54:10
...
剑指offer-10:矩形覆盖(递归和循环)
目录
1问题描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
2问题分析
- f(n)=f(n-1)+f(n-2)
3答案
递归实现
class Solution {
public:
int rectCover(int number) {
if(number<=0) return 0;
else if(number==1 || number==2) return number;
else return rectCover(number-1)+rectCover(number-2);
}
};
循环迭代实现
class Solution {
public:
int rectCover(int number) {
if(number<=0) return 0;
if(number==1 || number==2) return number;
int f1=1,f2=2;
while(number-- >2){
f2=f1+f2;
f1=f2-f1;
}
return f2;
}
};
上一篇: 基本数据结构----循环链表