10、矩形覆盖
题目描述:
我们可以用2*1
的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1
的小矩形无重叠地覆盖一个2*n
的大矩形,总共有多少种方法?
比如n=3
时,2*3
的矩形块有3种覆盖方法:
思路:
找规律,递归。target = n
分为两步考虑:
1、第一次摆放一块2*1
的小矩阵,则摆放方法总共为f(target - 1)
2、第一次摆放一块1*2
的小矩阵,则摆放方法总共为f(target-2)
,因为摆放了一块1*2
的小矩阵,对应下方的1*2
摆放方法就确定了,所以为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;}
return RectCover(target-1)+RectCover(target-2);
}
}
来源:CSDN
作者:llluluyi
链接:https://blog.csdn.net/llluluyi/article/details/104770186