免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
搜索
本版
文章
帖子
ToB圈子
用户
登录
立即注册
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微头条
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
SAAS
›
剑指offer-10、矩阵覆盖
返回列表
发新帖
剑指offer-10、矩阵覆盖
[复制链接]
发表于 2025-7-9 07:34:59
|
显示全部楼层
|
阅读模式
题目描述
我们可以用 2 * 1 的小矩形横着或者竖着去覆盖更大的矩形。叨教用n个 2 * 1 的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?
比如n=3时,2 * 3 的矩形块有3种覆盖方法:
思路及解答
我们须要用若干个2×1的小矩形(可以横放或竖放)无重叠地覆盖一个2×n的大矩形,求总共有多少种不同的覆盖方法。例如当n=3时,共有3种覆盖方法。
通过观察小规模案例,我们可以发现:
n=1时,只有1种方法(竖放)
n=2时,有2种方法(两个竖放或两个横放)
n=3时,有3种方法
n=4时,有5种方法
显然,这形成了一个类似斐波那契数列的规律:f(n) = f(n-1) + f(n-2)。这一题其实和上面田鸡跳台阶和斐波那契数列是一样的,变的只是场景。
递归
递归是解决这类题目最直观的方法。对于2×n的矩形,我们考虑第一块小矩形的放置方式:
如果竖着放,则剩下的部分是2×(n-1)的矩形,有f(n-1)种方法
如果横着放,则下方也必须横放一块,剩下的部分是2×(n-2)的矩形,有f(n-2)种方法
因此,总方法数为这两种环境之和:f(n) = f(n-1) + f(n-2),这正是斐波那契数列的递推关系
[code]public class Solution { public int rectCover(int n) { if (n
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
SQL-Server
物联网
Oracle
九天猎人
+ 我要发帖
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表