题目描述
我们可以用 2 ∗ 1 2*1 2∗1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个 2 ∗ 1 2*1 2∗1的小矩形无重叠地覆盖一个 2 ∗ n 2*n 2∗n的大矩形,总共有多少种方法?
参考代码
class Solution {
public:
int rectCover(int number) {
if(number == 0)
return 0;
if(number == 1)
return 1;
if(number == 2)
return 2;
int curMinus1 = 2;
int curMinus2 = 1;
int res = 0;
for(int i=3; i <= number; i++){
res = curMinus1 + curMinus2;
curMinus2 = curMinus1;
curMinus1 = res;
}
return res;
}
};
额。。。这其实依旧是“青蛙跳台阶”问题的变体,要学会举一反三呀。