剑指offer-矩形覆盖
2016-03-13 13:36
169 查看
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路(转载):
观察题目中的矩形,2*n的,是个长条形。本来脑中想象的是复杂的华容道,但是既然只是简单的长条形,那么依然逆向分析。既然是长条形的,那么从后向前,最后一个矩形2*2的,只有两种情况:第一种是最后是由一个2*(n-1)的矩形加上一个竖着的2*1的矩形 另一种是由一个2*(n-2)的矩形,加上两个横着的2*1的矩形 因此我们可以得出, 第2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。使用代码可以表示为:
for(i=3;i<71;i++){ arr[i] = arr[i-1]+arr[i-2]; }
仍然要注意数据类型,为long long型
public class Solution { public int RectCover(int target) { int n=target; if(n==0) return 1; if(n==1) return 1; int one=1; int two=1; int number=0; for(int i=2;i<=n;i++){ number=one+two; one=two; two=number; } return number; } }
相关文章推荐
- js基础与DOM
- node模块机制与异步处理详解
- JavaScript控制页面显示和隐藏带案例
- javascript继承
- 剑指offer-二叉搜索树与双向链表
- javascript常识
- Javascript中各种高度宽度解读
- Reactor
- 剑指offer-复杂链表的复制
- Three.js的轻量级封装框架Sim.js解析(1)
- caffe 输出重定向, 双重输出重定向
- 剑指offer:数组中只出现一次的数字
- 模块化-MVC与MVVM
- JavaScript事件
- 关于caffe做分类的classification.cpp
- js arguments对象的简单理解
- JS中创建函数的三种方式及区别
- js学习--浏览器对象计时器setInterval()与setTimeout()的使用与区别
- HTML中meta标签用法详解
- HTML中meta标签用法详解