剑指offer-矩形覆盖

原创 2018年04月15日 16:28:49

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

题目看似与前面的题不同,实际上和前面跳台阶本质上没啥不同。
这里我们需要注意,即使我们横着将2*1的矩形放入填充(即此时高只是2*n矩形的一半),但是!!!这样填充过后,这一段就确定了,因为2*1的矩形不可能在竖着放入!!
然后就是竖着放入的方式,就很好理解了。
本质上来说,就是青蛙一次跳2还是跳1。
递归:(效率奇低1443ms

public class Solution {
    int count = 0;

    public int RectCover(int target) {
        if (target == 0) {
            count++;
            return 0;
        }
        if (target < 0)
            return 0;
        RectCover(target - 2);
        RectCover(target - 1);
        return count;
    }
}

改为递推方式:

public class Solution {
public int RectCover(int target) {
        if(target==0)return 0;
        if (target==1||target==2)return target;
        int sum=0,s1=1,s2=2;
        while(target-2>0) {
            sum=s1+s2;
            s1=s2;
            s2=sum;
            target--;
        }
        return sum;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwzsdy/article/details/79950398

剑指offer——矩形覆盖问题

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:我们采用从能够简单到复杂的思路思考这个问题,当n=1的时...
  • sbq63683210
  • sbq63683210
  • 2016-07-30 10:35:05
  • 923

剑指Offer--039-二叉树的深度

链接 牛客OJ:二叉树的深度 九度OJ:http://ac.jobdu.com/problem.php?pid=1350 GitHub代码: 039-二叉树的深度 C...
  • gatieme
  • gatieme
  • 2016-05-07 20:39:04
  • 1365

【剑指offer】二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 方法一分析:主要思想就是层序遍历,就是有遍历上一层的每一个节点,得到下...
  • cdwxx1234
  • cdwxx1234
  • 2017-07-15 14:27:07
  • 180

剑指Offer-矩形覆盖

矩形覆盖题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析这道题还是利用斐波拉切数列的思想来完成 代码pub...
  • l2580258
  • l2580258
  • 2018-03-31 16:36:36
  • 9

牛客网刷题--剑指offer(两个栈实现队列)

牛客网给出的题目要求是用两个栈数据结构实现一个队列的push和pop操作。 两个栈实现队列这是很好理解的。因为栈的特性是后进先出(LIFO),而队列的特性是先进先出(FIFO),那两个栈连在一块儿,...
  • liu_sheng_1991
  • liu_sheng_1991
  • 2016-06-29 17:56:24
  • 437

牛客网剑指offer-用两个栈实现一个队列

思路:有两个栈,栈1和栈2.当入栈的时候,我们将它全放进栈1中,当需要出栈的时候,我们将栈1出栈到栈2中,然后再将栈2依次出栈。出完栈之后,再把stack2中的数pop出push到stack1,接受下...
  • Suyebiubiu
  • Suyebiubiu
  • 2017-12-12 15:46:19
  • 81

剑指offer-矩形覆盖问题

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:我们采用从能够简单到复杂的思路思考这个问题,当n=1的时...
  • qq_35214078
  • qq_35214078
  • 2018-03-29 13:47:20
  • 7

牛客网 剑指offer-矩形覆盖

问题描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 问题分析: 看了别人通过的代码分析,有一个比较易懂,...
  • hua_wenwen
  • hua_wenwen
  • 2017-09-22 08:52:46
  • 55

牛客网剑指offer-矩形覆盖

题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?class Solution { public: int...
  • yhn19951008
  • yhn19951008
  • 2018-02-24 23:39:02
  • 13

剑指offer: 矩形覆盖(循环与递归)

题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析: 如图,设n=3,设我们...
  • fengsser
  • fengsser
  • 2015-06-30 10:05:11
  • 2341
收藏助手
不良信息举报
您举报文章:剑指offer-矩形覆盖
举报原因:
原因补充:

(最多只允许输入30个字)