我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
依旧是斐波那契数列
| √ | |||||||
| √ |
第一次摆放一块1*2的小矩阵,则摆放方法总共为f(target-2)
| √ | √ | ||||||
| × | × |
递归思路
public class Solution {
public int RectCover(int target) {
if(target <= 2) return target;
else return RectCover(target - 1) + RectCover(target - 2);
}
}
非递归
public class Solution {
public int RectCover(int target) {
if(target <= 2) return target;
int r = 2, l = 1, m = 0;
for(int i = 3; i <= target; i++) {
m = l;
l = r;
r = m + r;
}
return r;
}
}
521



被折叠的 条评论
为什么被折叠?



