题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
分类:数组
解法1:斐波那契数列
分类:数组
解法1:斐波那契数列
public class Solution {
public int RectCover(int target) {
if(target==1) return 1;
if(target==2) return 2;
return RectCover(target-1)+RectCover(target-2);
}
}
下面是迭代算法,用空间换时间
public class Solution {
public int RectCover(int target) {
if(target==0||target==1) return 1;
if(target==2) return 2;
int pre = 1;
int next = 2;
int t = 0;
int i =2;
while(i<target){
t = pre+next;
pre = next;
next = t;
i++;
}
return next;
}
}