题解 | #矩形覆盖#

矩形覆盖

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

对于2n的大矩形,一共需要n块小矩形块
分析:
当放置第n块小矩形时,一共有两种放法,*
要么横着放,要么竖着放**
当第n块小矩形竖着放时,情况如图所示
图片说明
此时前面一共有f(n-1)种放法;
当第n块小矩形横着放时,情况如图所示
图片说明
此时第n块与第n-1块必定是横着叠放
此时前面一共有f(n-2)种放法;
因此f(n) = f(n-1) + f(n-2);
而f(0) = 0, f(1) = 1, f(2) = 2.
因此代码如下

public int rectCover(int target) {
        //一共需要n块木板,放置第n块木板的时候,要么横着放,要么竖着放
        //如果是竖着放,前面的n-1就已经放满了,有f(n-1)种可能
        //如果是横着放,一定是两根一起横着放,前面n-2就已经放满了, 有f(n-2)种可能
        //所以f(n) = f(n-1) + f(n-2);
        if(target <=2){
            return target;
        }
        int a = 1;
        int b =2;
        for(int i = 3;i<=target;i++){
            b = a+b;
            a = b-a;
        }
        return b;
    }
全部评论

相关推荐

2025-12-30 14:09
已编辑
北京交通大学 算法工程师
字节跳动 训练框架研发 (N+2) * (12 + 3) 硕士211
Crinton:训练框架遥遥领先
点赞 评论 收藏
分享
2025-12-16 17:17
门头沟学院 产品经理
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
2025-11-24 14:22
安徽师范大学 财务
勇敢求职牛牛:然后简历的话,我个人意见(双非本有零星的垃圾offer),学校经历太多了,写了也应该往财务方面靠,然后技能方面多写一点吧,比如ERP的水平,对某些行业的流程(制造业),对数据的逻辑和敏感之类的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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