题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
题目链接:
分析:
与跳台阶一样。
每增加1*2,最后这1*2的铺法有两种,平行于短边 总共有 arr[n-1] 种,垂直于短边总共有 arr[n-2]种,所以铺法总共有 arr[n] = arr[n-1 ]+ arr[n-2]
public class Solution { public int RectCover(int target) { if(target<=0){ return 0; } int[] arr=new int[target +2]; arr[0]=0; arr[1]=1; arr[2]=2; for(int i=3;i<=target;i++){ arr[i]=arr[i-1]+arr[i-2]; } return arr[target]; } }