10-04 矩形覆盖(斐波那契数列的应用)
题目描述:
我们可以用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 矩形覆盖(斐波那契数列的应用)相关推荐
- 2018.10.09 ZYH的斐波那契数列(线段树+矩阵快速幂)
描述 ZYH最近研究数列研究得入迷啦! 现在有一个斐波拉契数列(f[1]=f[2]=1,对于n>2有f[n]=f[n-1]+f[n-2]), 但是斐波拉契数列太简单啦,于是ZYH把它改成了斐波拉 ...
- linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.
C语言的函数问题求斐波那契前四十个数,斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学 />#include//the nest function used t ...
- 经典兔子问题python视频_【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】...
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 每个月的兔子数量 1:2 2:2 3:4 2+2 4:6 ...
- 斐波那契数列不用数组_兔子数列——斐波那契数列
相信人们都对斐波那契数列有或多或少的了解,如果没有,那你一定听过黄金分割比或是见过下面这种图片: 斐波那契生活在十三世纪的意大利,原名列奥纳多·皮萨诺(Leonardo Pisano),他出生在意大利 ...
- 萌新的Python练习实例100例(六)斐波那契数列
题目: 用Python写出斐波那契数列,并取出第10位数 分析: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibona ...
- Python - Python3 编程第一步 Fibonacci series: 斐波纳契数列
Fibonacci series: 斐波纳契数列, 两个元素的总和确定了下一个数,例如:1 1 2 3 5 8 13 21 34 55 Python程序如下: def fibonacci1(n):a, ...
- 斐波那契数列的背景及解决方法
斐波那契数列的背景及解决方法 背景: 前两天看到一道很有意思的数学题 假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖 ...
- 趣学算法--斐波那契数列
14天阅读挑战赛 努力是为了不平庸~ 目录 1.神奇的兔子数列 1.1问题分析 1.2斐波那契数列 1.3算法设计 1.3.1递归代码 1.3.2递归的改进,O(n)的代码 1.3.3时间复杂度为O( ...
- 斐波那契尾递归函数java_斐波那契数列 递归 尾递归 递推 C++实现
==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...
- 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)
1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...
最新文章
- python dataframe取某行某列_pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列...
- php文本分割成csv,怎么在php中将文本文件转换为csv文件并输出
- POJ-2524-Ubiquitous Religions
- 今夜,我又坐在电脑面前想你
- Springboot整合freemarker和相应的语法
- Stanford CS230深度学习(二)手动搭建DNN
- android jenkins 动态版本,Jenkins工具(二)之 Jenkins集成android工程
- 【Sqoop】Sqoop job实现增量导入的原理
- 《深入理解Windows操作系统》笔记5
- 易班开放平台第三方网站接入的Demo(Java_SDK)的步骤
- 数据整理——大数据治理的关键技术
- 什么是无监督学习?概念、使用场景及常用算法详解
- Excel:批量将某字符替换为“换行符”
- python pip在哪个文件夹运行_如何安装python与pip-百度经验
- 003 大数据4V特征
- 2021-03-26:给定一个正整数N,表示有N份青草统一堆放在仓库里。有一只牛和一只羊,牛先吃,羊后吃,它俩轮流吃草。 不管是牛还是羊,每一轮能吃的草量必须是:1,4,16,64…(4的某次方)。谁
- IEEE论文格式要求
- 【bzoj2548】灭鼠行动解题报告
- 记单词 真的挺容易--音标
- 重构系列之重构的标志:《重构》代码的坏味道
热门文章
- [深度学习] 分布式Pytorch介绍(三)
- 关于车机互联方式的一点想法
- 干货 | Elasticsearch7.X Scripting脚本使用详解
- MSP430程序跑飞原因
- CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案
- 业务中台建设与应用_容易网业务中台建设,助力企业数字化转型
- 漫游飞行_魔兽世界:德拉诺时光周 冲声望解锁德拉诺飞行好时机
- 反向Z(Reversed-Z)的深度缓冲原理
- leetcode 509. 斐波那契数
- antd table 时间搜索_antd table按表格里的日期去排序操作