矩形覆盖
来源:互联网 发布:博雅软件怎么用 编辑:程序博客网 时间:2024/05/18 07:26
问题描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路
这是一个斐波那契数列。
1. n=0时,return 0
2. n=1时,2*1的小矩形只有一个,大矩形为2*1,故只有一种方法,return 1
3. n=2时,两个小矩形,大矩形为2*2,若小矩形竖着放则为“ | | ”,若小矩形横着放“ = ”,只有两种方法,return 2
4. n>2时,分两步来考虑
- 小矩形竖着覆盖:
-
- 则覆盖方法总共有f(n-1)种
- 小矩形横着覆盖
-
- 则覆盖方法总共有f(n-2)种
综上 用n个2*1的小矩形无重叠的覆盖一个2*n的大矩形,总共有f(n-1)+f(n-2)种方法
代码如下
public class Solution { public int RectCover(int target) { if(target<1) return 0; else if(target==1||target==2) return target; else return RectCover(target-1)+RectCover(target-2); }}
阅读全文
0 0
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- Warning maven relocated xml-apis to 1.0.b
- fastboot及lk解析
- Servlet应用中重定向与请求转发的区别
- Java实现浏览器端大文件分片上传
- 8.12 K-生成树
- 矩形覆盖
- SQL Server删除表及删除表中数据的方法
- Binder总结
- Linux常用指令集
- Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
- Linux防火墙之具有命令行的FirewallD的基本操作
- 浅谈正则表达式
- STM32F4学习笔记01——ADC
- Android studio 3.0创建项目后,编译出错解决