题目描述:
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
长n无论为几,宽始终为2,所以从前往后每次覆盖,只有两种元方法,用一个小矩形覆盖一个宽为2长为1的矩形,或者用两个小矩形覆盖一个宽与长皆为2的矩形。那最后一步覆盖可以由前两种形式调用一个元方法覆盖过来,所以可以用斐波那契数列来解。
解法:
public class Solution {
public int RectCover(int target) {
if(target <= 2) {
return target;
}
return RectCover(target - 1) + RectCover(target - 2);
}
}
运行时间:324ms
占用内存:9304k