每日一道算法题——矩形覆盖
来源:互联网 发布:linux 安装jdk gz文件 编辑:程序博客网 时间:2024/06/05 11:47
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
测试用例:
0 1 2 3 4 … 10
对应输出应该为:
0 1 2 3 5 …
分析:
此题依旧是斐波那契数列。这里只贴出代码,具体的相关分析请参考另一篇博客:Dawson的博客
1.简单的递归:
public class Test1 { public int RectCover(int target) { if (target <=2) { return target; }else return RectCover(target - 1)+RectCover(target-2); }}
2.使用循环:
public class Test1 { public int RectCover(int target) { int Fn1 = 2;//相当于F(n-1) int Fn2 = 1;//相当于F(n-2) int result = 0; if (target <=2) return target; for (int i = 3; i <= target; i++) { result = Fn1 + Fn2; Fn2 = Fn1; Fn1 = result; } return result; }}
运行测试:
第一种:
运行时间:489ms
占用内存:19184k
第二种:
运行时间:16ms
占用内存:21320k
总结:
好多算法题的原型其实都是统一的,只要抓住核心的算法,稍加变通或是针对性地优化,都能拿出还可以的答案的。问题是如何把问题抽象化、提取出来。
阅读全文
0 0
- 每日一道算法题——矩形覆盖
- 每日一道算法题——1
- 每日一道算法题——2
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 【每日一道算法题】
- 算法题/矩形覆盖
- 每日一道算法题——最长回文字串
- 每日一道算法题——Container with Most Water
- 每日一道算法题——Longest Valid Parentheses
- 算法系列——矩形覆盖(剑指offer)
- 每日一道算法题——3个数字相加等于0
- 每日一道算法题——Letter Combinations of a Phone Number
- 每日一道算法题——Remove Nth Node From End of List
- 每日一道算法题3——得到数组子数组最大和
- 归并排序
- 一名转专业到计算机的分析
- [LeetCode] Dungeon Game
- Worker Thread设计模式
- 初学python前言
- 每日一道算法题——矩形覆盖
- 值得推荐的C/C++框架和库
- 详细的Log4j使用教程
- 快速排序的C语言实现
- 研究生互联网企业面试刷题信息渠道
- 2015-11-30-java-tomcat连接mySql数据库
- 记一次函数崩溃的现象分析,stack around the variable…was corrupted
- PDF.JS+JAVA跨域改进版
- QT5.7 做支持XP的程序