题目描述: 

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

解题思路与代码:

1) 排列组合:

class Solution {
public:int rectCover(int number) {if(number<=0) return 0; //没有,会报错。因为f(0)=1.(也进入了循环)int count = 0;for(int two = 0;two<= (number/2);two ++){ //two(y):每行横着放置的小块数目count += com(number-two,two);}return count;}int com(int m,int n){  //计算C(n-y,y)int i = m; int sum=1;for(int j = 0;j < n;j++,i--){sum = sum *i / (j+1);        // m/1    (m-1)/2    (m-2)/3   ...   (m-n+1)/n}return sum;}
};

2)当n>2时,用第一个2*1的小矩形去覆盖大矩形的最左侧,有两种选择,竖着放或者横着放。

竖着放时,右边还剩下2*(n-1)的区域,覆盖的方法同f(n-1)相同。

横着放时,其下面也必须横着放,此时右边还剩下2*(n-2)的区域,覆盖方法同(n-2)相同。

n<=0,f(n)=0;

n=1,f(1)=1;

n=2,f(2)=2;

class Solution {
public:int rectCover(int number) {if(number<=0)return 0;if(number==1)return 1;if(number==2)return 2;long long numRes = 2;long long temp = 1;for(int i = 3;i<=number;i++){numRes = numRes + temp;temp = numRes - temp;}return numRes;}
};

  

转载于:https://www.cnblogs.com/GuoXinxin/p/10407275.html

10-04 矩形覆盖(斐波那契数列的应用)相关推荐

  1. 2018.10.09 ZYH的斐波那契数列(线段树+矩阵快速幂)

    描述 ZYH最近研究数列研究得入迷啦! 现在有一个斐波拉契数列(f[1]=f[2]=1,对于n>2有f[n]=f[n-1]+f[n-2]), 但是斐波拉契数列太简单啦,于是ZYH把它改成了斐波拉 ...

  2. linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.

    C语言的函数问题求斐波那契前四十个数,斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学 />#include//the nest function used t ...

  3. 经典兔子问题python视频_【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】...

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 每个月的兔子数量 1:2 2:2 3:4 2+2 4:6 ...

  4. 斐波那契数列不用数组_兔子数列——斐波那契数列

    相信人们都对斐波那契数列有或多或少的了解,如果没有,那你一定听过黄金分割比或是见过下面这种图片: 斐波那契生活在十三世纪的意大利,原名列奥纳多·皮萨诺(Leonardo Pisano),他出生在意大利 ...

  5. 萌新的Python练习实例100例(六)斐波那契数列

    题目: 用Python写出斐波那契数列,并取出第10位数 分析: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibona ...

  6. Python - Python3 编程第一步 Fibonacci series: 斐波纳契数列

    Fibonacci series: 斐波纳契数列, 两个元素的总和确定了下一个数,例如:1 1 2 3 5 8 13 21 34 55 Python程序如下: def fibonacci1(n):a, ...

  7. 斐波那契数列的背景及解决方法

    斐波那契数列的背景及解决方法 背景: 前两天看到一道很有意思的数学题 假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖 ...

  8. 趣学算法--斐波那契数列

    14天阅读挑战赛 努力是为了不平庸~ 目录 1.神奇的兔子数列 1.1问题分析 1.2斐波那契数列 1.3算法设计 1.3.1递归代码 1.3.2递归的改进,O(n)的代码 1.3.3时间复杂度为O( ...

  9. 斐波那契尾递归函数java_斐波那契数列 递归 尾递归 递推 C++实现

    ==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...

  10. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

最新文章

  1. python dataframe取某行某列_pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列...
  2. php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出
  3. POJ-2524-Ubiquitous Religions
  4. 今夜,我又坐在电脑面前想你
  5. Springboot整合freemarker和相应的语法
  6. Stanford CS230深度学习(二)手动搭建DNN
  7. android jenkins 动态版本,Jenkins工具(二)之 Jenkins集成android工程
  8. 【Sqoop】Sqoop job实现增量导入的原理
  9. 《深入理解Windows操作系统》笔记5
  10. 易班开放平台第三方网站接入的Demo(Java_SDK)的步骤
  11. 数据整理——大数据治理的关键技术
  12. 什么是无监督学习?概念、使用场景及常用算法详解
  13. Excel:批量将某字符替换为“换行符”
  14. python pip在哪个文件夹运行_如何安装python与pip-百度经验
  15. 003 大数据4V特征
  16. 2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里。有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草。 不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64…(4的某次方)。谁
  17. IEEE论文格式要求
  18. 【bzoj2548】灭鼠行动解题报告
  19. 记单词 真的挺容易--音标
  20. 重构系列之重构的标志:《重构》代码的坏味道

热门文章

  1. [深度学习] 分布式Pytorch介绍(三)
  2. 关于车机互联方式的一点想法
  3. 干货 | Elasticsearch7.X Scripting脚本使用详解
  4. MSP430程序跑飞原因
  5. CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案
  6. 业务中台建设与应用_容易网业务中台建设,助力企业数字化转型
  7. 漫游飞行_魔兽世界:德拉诺时光周 冲声望解锁德拉诺飞行好时机
  8. 反向Z(Reversed-Z)的深度缓冲原理
  9. leetcode 509. 斐波那契数
  10. antd table 时间搜索_antd table按表格里的日期去排序操作