题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路解法
所以当有n块小矩阵时,就是(1)(2)种情况的总和。
即f(target)=f(target - 1)+ f(target -2)
又到了熟悉的斐波拉契数列。
代码如下:
public class Solution {
public int RectCover(int target) {
if(target == 0){
return 0;
}if(target == 1){
return 1;
}if(target == 2){
return 2;
}else{
return RectCover(target - 1) + RectCover(target - 2);
}
}
}
这里注意要写target=0的情况,因为牛客网的测试里面包含target=0。
运行情况如下: