剑指offer-10-矩形覆盖
2018-08-06 本文已影响0人
Buyun0
矩形覆盖:
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:
n == 1时,显然是一种
n == 2时,显然也只有一种

n == 3时,如图有2种


n == 4时,如图有3种



n == 5时,5种
n == 6时,8种
·
·
·
·
可以看出其实就是斐波拉且数列
class Solution {
public:
int rectCover(int number) {
if(number<=0){
return 0;
}else if(number<=2){
return number;
}else{
return rectCover(number-1)+rectCover(number-2);
}
}
};