博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(python版)《剑指Offer》JZ10:矩形覆盖
阅读量:4091 次
发布时间:2019-05-25

本文共 573 字,大约阅读时间需要 1 分钟。

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

比如n=3时,2x3的矩形块有3种覆盖方法:

在这里插入图片描述
示例:
输入:4 ==> 返回:5
输入:5 ==> 返回:8

【解题思路】

我们先把2x5的覆盖方法记为f(5)。用第一个1x2小矩阵覆盖大矩形的最左边时有两个选择,竖着放或者横着放。
当竖着放的时候,右边还剩下2x4的区域,这种情况下的覆盖方法记为f(4)。
接下来考虑横着放的情况。当1x2的小矩形横着放在左上角的时候,左下角必须横着放一个1x2的小矩形,而在右边还剩下2x6的区域,这种情况下的覆盖方法记为f(3)。因此f(5)=f(4)+f(3)。
此时我们可以看出,这仍然是斐波那契数列。

class Solution:    def rectCover(self, number):        if number<=3:            return number        a,b,sums=1,2,0        for _ in range(3,number+1):            sums = a+b            a = b            b = sums        return sums

转载地址:http://lfjii.baihongyu.com/

你可能感兴趣的文章
编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
查看>>
编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
查看>>
都无代码了,还要程序员吗?
查看>>
程序员:凭自己能力吃饭,有什么理由瞧不起?
查看>>
面试想拿 10K,HR 说我只配7k?
查看>>
副业过万的程序员都知道的网站有哪些
查看>>
那些人生“开挂”的程序员,都在干什么?
查看>>
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>
大学辍学、自学编程,GitHub 创始人是怎么号召 2800 万程序员的?
查看>>
为什么我抛弃了 Ubuntu?
查看>>
GitHub 标星 2.7w+!超全大厂面试笔记整理!
查看>>
牛逼!这款神器能在浏览器跑 VS Code,让你随时随地写代码!
查看>>
推荐一位 10w+ 粉丝的 Python 工程师
查看>>
假如计算机是中国人发明的,那代码应该这么写
查看>>
科技公司最爱的 50 款开源工具,你都用过吗?
查看>>
触目惊心:比特币到底消耗了多少能源?
查看>>
面试官:简历上敢写技术精通?那我就不客气了!
查看>>