剑指offer-矩阵覆盖

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
 
使用dp,当n时,选着竖着放一个,那么后面的可能性为f(n-1)
        选择横着放一个,那么要占两个位置,后面的可能性为f(n-2)
故f(n)=f(n-1)+f(n-2),f(1)=1,f(2)=2,
(斐波那契数列)
 1 public int RectCover(int target) {
 2         if(2>=target){
 3             return target;
 4         }
 5         int x1 = 1;
 6         int x2= 2;
 7         int re = 0;
 8         for(int i=3;i<=target;i++){
 9             re = x1+x2;
10             x1 = x2;
11             x2 = re;
12         }
13         return re;
14     }

 

posted @ 2019-04-09 16:18  月半榨菜  阅读(59)  评论(0编辑  收藏  举报