剑指Offer - 矩形覆盖 (C/C++, Java, Python )

 

题目描述

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

 

思路:

剑指Offer - 矩形覆盖 (C/C++, Java, Python )_第1张图片

递推式:f(n) = f(n-1) + f(n-2)

 

C/C++

class Solution {
public:
    int rectCover(int number) {
        vector mid;
        for(int i=0; i

Java

 

Python    运行时间:29ms    占用内存:5708k

# -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        ans = []
        ans.append(0)
        ans.append(1)
        ans.append(2)
        for i in range(3, number+1):
            ans.append(ans[i-1]+ans[i-2])
        return ans[number]

 

 

 

你可能感兴趣的:(剑指Offer题解)