问题描述

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

求解思路

同样是斐波那契的数列的思路,本质上是动态规划。

  • n<=0时,结果为零,这是下界条件。
  • n==1时,只有竖着一种覆盖方式。
  • n==2时,有并排横着和并排竖着两种方式。
  • 假设n步的情况下有f(n)f(n)f(n)种方式,那么如果前一个状态是只差了一个竖着的2*1矩形,那么为f(n−1)f(n-1)f(n−1);如果是差了两个矩形的空间,那么是f(n−2)f(n-2)f(n−2);综上可知:f(n)=f(n−1)+f(n−2)f(n)=f(n-1)+f(n-2)f(n)=f(n−1)+f(n−2)

之后就是利用递推求解了。。。。

AC代码

class Solution {public:int rectCover(int number) {if(number <= 0) {return 0;}if(number == 1) {return 1;}if(number == 2) {return 2;}int a = 1, b = 2;for(int i = 3; i <= number; ++i) {int t = a;a = b;b = t + a;}return b;}
};

斐波那契数列递推思想总结

本质上,斐波那契递推思想就是一个动态规划。利用前面的计算结果,递推地计算后边的,可以有效的防止重复的运算。一般这种问题的解决步骤如下:

  • 先找出几个容易计算的初始条件
  • 寻找最少的初始条件的组合方式,使之可以递推出后面的结果
  • 寻找一般的递推公式

可能寻找公式的时候,需要自己进行简化,比如前面的变态跳台阶问题。但是,核心的步骤还是找公式!!!

剑指offer之矩形覆盖问题相关推荐

  1. 剑指Offer #10 矩形覆盖(问题分析)

    题目来源:牛客网-剑指Offer专题 题目地址:矩形覆盖 题目描述 我们可以用2∗12*12∗1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2∗12*12∗1的小矩形无重叠地覆盖一个2∗n2*n2 ...

  2. 剑指offer:矩形覆盖 python 实现

    题目 题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路 简单的推一下,又是斐波那契数列 # -*- co ...

  3. 剑指offer:矩形覆盖

    题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: 和跳台阶那道题差不多.分别以矩形的两条边长做拓 ...

  4. 剑指offer十:矩形覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路如下: 当第一次横着覆盖时,覆盖方法为f(n-2); 当 ...

  5. Python剑指offer:矩形覆盖问题

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用8个21的小矩形 无重叠的覆盖一个28的大矩形,共有多少种方法? * * * * * * * * * * * * * * * * * * 这 ...

  6. 【剑指offer】矩形覆盖

    一.题目: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 二.思路: 斐波那契数列 三.代码:      转载于:h ...

  7. 《剑指Offer》 矩形覆盖

    题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路: 这题和前面的那道跳台阶是一模一样的题,也是动态规划 ...

  8. 剑指offer Q10 矩形覆盖

    题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 这不还是斐波那契数列!怎么回事 直接上代码 class Solu ...

  9. 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列

    题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...

最新文章

  1. Top 命令 如何查看linux系统中空闲内存/物理内存使用/剩余内存
  2. 清华医工结合项目及三创项目与天津市27家重点医院对接
  3. 真正决定分辨准确率的是图片重叠的区域
  4. 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!...
  5. 一网打尽2013最常用的NoSQL数据库
  6. ini_set(display_errors,On);和error_reporting(E_ALL);
  7. linux oracle手动启动两个实例
  8. Android开发人员应该知道的一些技术
  9. 语言做一个自动售货机软件_软件开发手机app系统软件高端定制做一个app软件要多少钱...
  10. 我的docker随笔33:在容器中连接oracle数据库
  11. mysql在学号列创建主码约束_MySQL 数据完整性
  12. dotproject问题。
  13. 员工新参(北京)社保所需材料
  14. PLC同时连接多个触摸屏和电视机显示器解决方案
  15. 随想002:设计规范
  16. 复制url直接能跳过验证_爬虫黑科技-绕开百度人机验证
  17. indesign中怎么在冒号后面ctrl_InDesign不完全使用指南
  18. 机器学习及SparkMLlib简介
  19. ibm ilog mysql_IBM ILOG CPLEX Optimization Studio: 一个整数规划的案例
  20. 如何看待 Google 最新的系统 Fuchsia?

热门文章

  1. 计算机组成原理 第七章 输入输出系统
  2. 数据结构 5-3-2 二叉树前序中序后序遍历非递归实现
  3. ~~Bellman-Ford算法
  4. 【超简单已实现】CSDN实现点击跳转到指定段落
  5. 如何使用Windows、Ubuntu甚至手机登录远程计算机
  6. HMAC加密的消息摘要码
  7. 剑指offer——22.链表中倒数第k个节点
  8. 敏捷开发用户故事系列之四:优先级排序
  9. 用localStorage来存储数据的一些经验
  10. 自创数据集,使用TensorFlow预测股票入门(转)