收藏:①极市开发DeepLearning ②Git使用

剑指offer-10

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
 
解释: 这个就是斐波那契数列的一个应用
 
因为当新增加的矩形横着放 就相当于 F【n-2】 当竖着放相当于 F【n-1】
 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def rectCover(self, number):
 4         # write code here
 5         if number == 0:
 6             return 0
 7         if number == 1:
 8             return 1
 9         if number == 2:
10             return 2
11         if number > 2:
12             result = [0] * (number)
13             result[0], result[1] = 1,2
14             for i in range(2,len(result)):
15                 result[i] = result[i-1] + result[i-2]
16         return result[-1]

 

posted @ 2019-04-22 20:14  WSX_1994  阅读(103)  评论(0编辑  收藏  举报