剑指offer【11】- 矩形覆盖

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

 

在分析前不知道是什么序列,所以先看了n=1,n=2,n=3,n=4的情况摸索规律,主要是看 n 和 n-1 的隐含联系。(2*1 指 长宽)

结论:f(n) = f(n-1)+f(n-2)   (n>=3)

 

 1 public class Solution {
 2     public int RectCover(int target) {
 3         if(target == 0){
 4             return 0;
 5         }else if(target == 1){
 6             return 1;
 7         }else if(target == 2 ){
 8             return 2;
 9         }else{
10             return RectCover(target-1)+RectCover(target-2);
11         }
12     }
13 }

 

posted @ 2019-08-05 19:08  [浪子回头]  阅读(111)  评论(0编辑  收藏  举报