矩形覆盖 python版本

矩形覆盖

http://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6

这个问题同样是一个斐波那契数列问题,首先判断当number输入小于0的情况,这时候应该返回None;
否则则是小于等于1的情况,即0,1的两种情况,这时候返回的应该同样是0,1,所以return number;
最后就是大于1的情况,当等于2时,考虑最后一步如果是横着,则剩下的是f(1)中情况,如果是竖着,同样剩下的是f(1)种情况;
以此类推,假设当等于8时,最后一步如果是竖着,剩下的是2*7,这时候应该是f(7)种方法,
如果是横着放,则上下的方块同样也要横着放,剩下的那一部分为2*6,此时为f(6)种情况,所以为f(8) = f(7)+f(6)
 # -*- coding:utf-8 -*-
class Solution:
    def rectCover(self, number):
        # write code here
        if number < 0:
            return None
        elif number <= 1:
            return number
        else:
            rectCover0 = 0
            rectCover1 = 1
            rectCoverN = 0
            for i in range(number):
                rectCoverN = rectCover1 + rectCover0
                rectCover0 = rectCover1
                rectCover1 = rectCoverN
            return rectCoverN

全部评论

相关推荐

07-28 16:37
门头沟学院 Java
哎,继续加油吧
ResourceUt...:能接到面试就已经是✌🏻了
腾讯一面2195人在聊
点赞 评论 收藏
分享
牛客34884196...:你期望薪资4-5k,那确实可以重生了,但很难在深圳活下去
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务