【剑指Offer-循环和递归】面试题10.4:矩形覆盖
时间:2020-03-26
本文章向大家介绍【剑指Offer-循环和递归】面试题10.4:矩形覆盖,主要包括【剑指Offer-循环和递归】面试题10.4:矩形覆盖使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?
思路
可以推一下:用2x1的小矩形覆盖2x1的大矩形共1种方法,覆盖2x2的矩形共2种方法,覆盖2x3的矩形共3种方法,覆盖2x4的矩形共5种方法,可以看出方法数满足斐波那契数列。
如上图所示,把使用2x1的矩形覆盖2x8的矩形的放法数记为f(8),则用第一个2x1的矩形覆盖时有两种放法:(1)竖着放,此时右边剩下2x7的区域,所以放法数还剩f(7);(2)横着放,此时左下角必须再横着放一个2x1的矩形,此时还剩下2x6的区域,所以剩余放法数f(6),所以f(8)=f(7)+f(6)。
代码如下:
class Solution {
public:
int rectCover(int number) {
if(number<1)
return 0;
int a[2];
a[0] = 1;
a[1] = 2;
if(number<=2)
return a[number-1];
for(int i=2; i<number; i++){
int t = a[0] + a[1];
a[0] = a[1];
a[1] = t;
}
return a[1];
}
};
原文地址:https://www.cnblogs.com/flix/p/12572577.html
- 这或许是对小白最友好的python入门了吧——13,字典初识
- PHP 安全与性能
- 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...
- Linux 系统与数据库安全
- 这或许是对小白最友好的python入门了吧——12,列表深入体验
- 初识SqlLite ---.net连接数据库
- 【实践操作】:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器
- 这或许是对小白最友好的python入门了吧——11,if语句初体验
- 你的网站做好神马搜索优化了吗?神马搜索站长工具提交
- 应用程序的通信成本
- 这或许是对小白最友好的python入门了吧——18,定义函数
- 【深度学习】图片风格转换应用程序:使用CoreML创建Prisma
- 压力测试中存在的问题
- 这或许是对小白最友好的python入门了吧——18,用while循环处理列表
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 链表常见操作总结及C++实现
- 跳表原理及C++实现
- MySQL 8.0 新特性:WriteSet 复制
- leetcode: explore-array-30 有效的数独
- leetcode: explore-array-29 两数之和
- leetcode: explore-array-28 移动零
- leetcode: explore-array-27 加一
- leetcode: explore-array-26 列表取交集 II
- leetcode 找出唯一一个只出现一次的数字
- leetcode: 找出不重复的列表
- Python “原地”旋转数组
- Python backoff 实现轮询
- Python argparse 模块
- 3分钟快速搭建 linux 虚拟环境
- 每日一题:如何实现异步任务处理来解决耗时操作问题