剑指offer-10.矩形覆盖
来源:互联网 发布:淘宝买家秀哪里看 编辑:程序博客网 时间:2024/06/11 23:00
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:斐波那契数列的变种,为什么是斐波那契数列的变种?首先我们认为小矩形为N的时候的总数是N,而那么根据组合数学里的加法原理,
我把此题分为两类,第一类就是小矩形1*2放
,那么剩下的
就是F(N-
1
)种,第二种就是小矩形2*1放
,好神奇哟,那么
剩下的就是F(N-
2
)种,因此加法原理告诉我们,F(N)=F(N-
1
)+F(N-
2
),可
不就是斐波那契数列的变种嘛,知道这个了,可以利用递归或
for
循环即
可求解。递归版容易想到,而且代码很少,但是递归不好的地方就是时间复杂度很大。
递归版:
class Solution { public: int rectCover(int number) { if(number <= 0) return 0; else if(number == 1) return 1; else if(number == 2) return 2; else return jumpFloor(number-1) + jumpFloor(number-2); } };迭代版:
class Solution {public: int rectCover(int number) { int fn = 0; int f1 = 1; int f2 = 2; if (number == 1 || number == 2) return number; for (int i = 3; i <= number; i++) { fn = f1 + f2; f1 = f2; f2 = fn; } return fn; }};突然最后发现这道题跟剑指offer-8.跳台阶是一样的,
0 0
- 剑指offer-10.矩形覆盖
- 剑指Offer--10.矩形覆盖
- [剑指Offer] 10.矩形覆盖
- 剑指offer--矩形覆盖
- 剑指offer--矩形覆盖
- 《剑指offer》矩形覆盖
- 剑指offer 矩形覆盖
- 《剑指offer》矩形覆盖
- 剑指 offer:矩形覆盖
- 【剑指Offer】矩形覆盖
- 剑指offer 矩形覆盖
- 剑指offer-矩形覆盖
- 剑指Offer 矩形覆盖
- 剑指offer 矩形覆盖
- [剑指offer]矩形覆盖
- 《剑指offer》-矩形覆盖
- 【剑指offer】覆盖矩形
- 《剑指offer》矩形覆盖
- SpringMVC基于Controller的注解
- Gitlab 系统Log文件对应操作关系List
- POJ 3252 Round Numbers (数位dp)
- LED流水灯
- hibernate入门笔记
- 剑指offer-10.矩形覆盖
- jsp
- MySQL视图
- abstract class和interface有什么区别
- 使用Node.js搭建微信支付后台(一)
- hrbust 1865人类希望——kokoⅡ【思维】
- Java中的深浅拷贝
- 创建数据库的表空间
- 工作中遇到的问题