剑指Offer——矩形覆盖

题目描述:

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


分析:

2*n的矩阵可以由2*(n-1)的矩阵竖着放一个小矩阵得到,或者由2*(n-2)的矩阵横着放两块小矩阵得到。

建模之后便是斐波那契数列的求解。


代码:

 1 class Solution {
 2 public:
 3     int rectCover(int number) {
 4         if(number == 0) return 0;
 5         int a = 1, b = 1;   // a是b的前一个值
 6         for(int i = 2; i <= number; i++) {   // 循环后移求出下一个b值,a一直是b的前一个值
 7             b += a; // 求出下一个值
 8             a = b - a;  // a等于之前的b值
 9         }
10         return b;
11     }
12 };
原文地址:https://www.cnblogs.com/jacen789/p/7742999.html