剑指offer——11矩阵覆盖

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
 
题解:
  使用递归或者动态规划,明显,递归没有动态规划优
 
  
 1 class Solution01 {
 2 public:
 3     int rectCover(int number) {
 4         if(number<=2)return number<0?0:number;
 5         return rectCover(number-1)+rectCover(number-2);
 6     }
 7 };
 8 
 9 
10 class Solution02 {
11 public:
12     int rectCover(int number) {
13         if (number <= 2)return number < 0 ? 0 : number;
14         vector<int> dp(number + 1, 0);
15         dp[1] = 1; dp[2] = 2;
16         for (int i = 3; i <= number; ++i)
17             dp[i] = dp[i - 1] + dp[i - 2];
18         return dp[number];
19     }
20 };
原文地址:https://www.cnblogs.com/zzw1024/p/11654141.html