题目描述
我们可以用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 };