剑指OFFER-矩形覆盖

剑指OFFER-矩形覆盖

  • Question
  • Solution

Question

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

Solution

时间复杂度:O(N)
空间复杂度:O(1)

  • Python
class Solution:
    def rectCover(self, number):
        if number < 3:
            return number
        pp, p = 1, 2
        for i in range(number-2):
            ans = pp + p
            pp, p = p, ans
        return ans
  • C++
class Solution {
public:
    int rectCover(int number) {
        if(number<3)
            return number;
        int pp = 1;
        int p = 2;
        int ans = 0;

        for(int i=3; i<=number; i++){
            ans = pp + p;
            pp = p;
            p = ans;
        }
        return ans;
    }
};

你可能感兴趣的:(剑指OFFER-矩形覆盖)