矩形覆盖
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:

思路分析
- 同样类似斐波那契数列,这些问题我们可以利用数学归纳法来找到其中的规律,,比如2x8覆盖记为F(8),当用一个块在最左边去覆盖时,竖着放,右边有2x7,就是F(7),当横着方式,右边只有2x6,记为F(6),最终 我们得知F(8) = F(7) + F(6),也是就斐波那契数列的应用。
代码
public class Solution { public int RectCover(int target) { if(target <= 2){ return target; } int a = 1; int b = 2; int tem = 0; for(int i = 3; i <= target; i++){ tem = a; a = b; b = a + tem; } return b; } }

浙公网安备 33010602011771号