题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:用数学归纳的思想分析,得出规律。
牛客网提交代码:
public class Solution {
public static int RectCover(int target) {
//用一个放置在最左边时有两个选择:
//竖着放:右边剩下2*(n-1)区域,共RectCover(n-1)种方法
//横着放:先将方面的空间填满,右边剩下2*(n-2)区域,共RectCover(n-2)种方法
//RectCover(n)=RectCover(n-1)+RectCover(n-2);
int[] init={1,1,2};
if(target<=2)
return init[target];
int one=1;
int two=2;
int result=0;
for(int i=3;i<=target;i++){
result=one+two;
one=two;
two=result;
}
return result;
}
public static void main(String[] args){
int target=10;
System.out.println(RectCover(target));
}
}
Note:
初始值为1