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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 源码分析 spring-core

先来看下 spring-core 的包结构 总共有6个模块&#xff0c;分别是 asm、cglib、core、lang、objenesis、util asm包&#xff1a; 用来操作字节码&#xff0c;动态生成类或者增强既有类的功能。主要包含以下这些类。详细功能。 https://www.ibm.com/developerworks/cn/java/j…

logging 模块

一、logging模块级别及常用函数 默认的level是logging.Warning,低于该级别的就不输出了。级别排序:Critical> Error > Warning > Info > Debug Logging.Formatter&#xff1a;配置日志的格式&#xff0c;在里面自定义设置日期和时间&#xff0c;输出日志的时候将会…

大数据项目中的QA需要迎接新的挑战

大数据项目中的QA需要迎接新的挑战根据IDC全球半年度大数据和分析支出指南的最新预测&#xff0c;到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元。在大数据和业务分析解决方案上投资增长最快的行业包括银行&#xff08;复合年增长率13.3%&#xff09;、医疗、保…

spring源码分析之spring-core总结篇

1.spring-core概览 spring-core是spring框架的基石&#xff0c;它为spring框架提供了基础的支持。 spring-core从源码上看&#xff0c;分为6个package&#xff0c;分别是asm&#xff0c;cglib&#xff0c;core&#xff0c;lang&#xff0c;objenesis和util。 1.1 asm 关于as…

五分钟搞懂后缀数组!

为什么学后缀数组 后缀数组是一个比较强大的处理字符串的算法&#xff0c;是有关字符串的基础算法&#xff0c;所以必须掌握。 学会后缀自动机(SAM)就不用学后缀数组(SA)了&#xff1f;不&#xff0c;虽然SAM看起来更为强大和全面&#xff0c;但是有些SAM解决不了的问题能被SA解…

spring-core

spring最核心的组件是BeanFactory&#xff0c;看了源码才发现&#xff0c;BeanFactory并非定义在spring-core中&#xff0c;那spring-core都有啥东东&#xff1f; spring-core主要提供以下服务&#xff0c;为BeanFactory的定义提供基础服务。 1, ConversionService Conversi…

nginx配置静态文件过期时间

1. 编辑虚拟主机配置文件/usr/local/nginx/conf/vhosts/huangzhenping.conf 说明&#xff1a;采用location方式 12345678910location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${access_log off;expires 1d;}location ~ \.(js|css){access_log off;expires 1d;}2. 检查配置文件&#x…

vue 移动端在div上绑定click事件 失效

在.vue的文件中使用了better-scroll&#xff0c;在div标签上绑定click事件后&#xff0c;无效。 原因&#xff1a;使用了better-scroll&#xff0c;默认它会阻止touch事件。所以在配置中需要加上click: true 即可解决 mounted(){this.$nextTick(() > {let bscrollDom this.…

Java中的钩子方法

钩子方法是啥 钩子顾名思义就是用来挂东西的。那么要挂东西必须有个被挂的东西&#xff0c;要不就是铁环、要不就是墙的边沿。所以要能挂住东西必须要有个被勾住的铁环&#xff0c;要一个钩子。那么在java中也是同样的原理&#xff0c;你首先需要一个被挂在的东西&#xff0c;一…

启动tomcat出现too many connections的原因及解决方法

感谢分享&#xff0c;原文地址&#xff1a;http://blog.sina.com.cn/s/blog_e7e07ec30102vsba.html一、原因 产生too many connections 的直接原因是因为数据库提供的连接被全部占满了。数据库可以提供多少连接&#xff0c;可以再my.cnf(linux)或者my.ini(windows)下设定。这个…

Spring Beans 初始化流程分析

测试用例 依然使用这个官网上的用例&#xff0c;来进行调试&#xff1b; Person.java package org.shangyang.spring.container;/**- - author shangyang**/public class Person {String name;Person spouse;public String getName() {return name;}public void setName(Stri…

剑指offer(65)矩阵中的路径

题目描述 请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始&#xff0c;每一步可以在矩阵中向左&#xff0c;向右&#xff0c;向上&#xff0c;向下移动一个格子。如果一条路径经过了矩阵中的某一个…

VSCode中怎么改变文件夹的图标

昨天更新了VSCode后我的文件夹图标莫名其妙的没有了&#xff0c;变成了下图这样 看着真的让我难受的头皮发麻&#xff0c;本来打代码就头发少&#xff0c;难道非要让我变成秃头&#xff0c;不可能不可能&#xff0c;所以我找了找怎么解决 来&#xff0c;各位看官上眼 如图所示 …

jdk1.8以前不建议使用其自带的Base64来加解密

JDK1.8之前的base64是内部测试使用的代码&#xff0c;不建议生产环境使用&#xff0c;而且未来可能会移除&#xff0c; JDK1.8提供最新可以正式使用的Base64类&#xff0c; 不要使用JDK中自带的sun.misc.BASE64Decoder这个类去BASE64&#xff0c; 这个会在后面多加换行。使用ap…

Redis的五大数据类型

1.String&#xff08;字符串&#xff09; String是Redis最基本的类型&#xff0c;一个Key对应一个Value。 String类型是二进制安全的&#xff0c;意思是Redis的String可以包含任何数据&#xff0c;比如jpg图片或者序列化的对象。 String类型是Redis最基本的数据类型&#xff0c…

springxml解析

1.XML验证模式的认识 首先XML的验证模式有两种&#xff1a;DTD和XSD。 DTD文档类型定义&#xff0c;是XML约束模式语言。它是为了保证XML文档格式正确有效的方法。通过XML文档和DTD文档的比较来判断XML是否符合规范。(现在我很少见&#xff0c;不知道是不是淘汰了) 举个例子&…

jq函数绑定与解绑

最近学到几个新的jq函数 1、bind&#xff08;&#xff09;绑定函数 2、unbind&#xff08;&#xff09;解绑函数 3、add() .给元素追加字符串 4、addClass() 给某元素增加class属性值转载于:https://www.cnblogs.com/bigwang1126/p/9566556.html

微信小程序时间标签与范围联动设计实现

微信小程序时间标签与范围联动设计实现&#xff1f;最近忙于一个有关数据管理的微信小程序开发&#xff0c;遇到了上图情况&#xff0c;虽然很简单&#xff0c;还是整理一下。若有错误&#xff0c;请广大朋友们指正。 使用微信小程序组件radio-group、picker&#xff0c;用wxss…

github中的watch、star、fork的作用

在每个 github 项目的右上角&#xff0c;都有三个按钮,分别是 watch、star、fork&#xff0c;但是有些刚开始使用 github 的同学&#xff0c;可能对这三个按钮的使用却不怎么了解&#xff0c;包括一开始使用 github 的我也是如此&#xff0c;这篇博客&#xff0c;结合自己的理解…

docker 操作 记录

docker ps #查看当前docker容器 docker exec -it 容器名称 sh 进入docker容器 docker stop 停止docker容器转载于:https://www.cnblogs.com/objects/p/9569299.html