[牛客网,剑指offer,python] 矩阵覆盖

来源:互联网 发布:朝鲜人眼中的中国知乎 编辑:程序博客网 时间:2024/06/18 11:56

矩阵覆盖

题目描述

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

解题思路

这个问题和 跳台阶 很相似,2*n的大矩形就相当于“跳台阶“问题中的台阶,大矩形的长度n相当于台阶的个数n;从左至右的去覆盖,把小矩形竖着放相当于跳一个台阶,把小矩阵横着放相当于跳两个台阶。
故:当前n的覆盖种数 = 当前n-1的覆盖总数 + 当前n-2的覆盖总数
即:f (n) = f (n-1) + f (n-2)

代码

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