【剑指 offer】三,矩形覆盖(java实现)
2015-08-23 23:00
381 查看
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:同样是典型的递归问题。如下图所示,当尝试对2×n的大矩阵进行覆盖时,如果第一块小矩阵竖着放,相当于递归的求对2×(n-1)的矩阵的覆盖方法。
如果第一个矩阵横着放,则相当于求对2×(n-2)的矩阵的覆盖方法。得递推公式f(n)=f(n-1)+f(n-2)。考虑边界条件。代码如下:
题
public class Solution { public int RectCover(int target) { if(target==0||target==1){ return 1 ; } if(target==2){ return 2 ; } int temp1 = 1 ,temp2 = 2 ,res = 0 ; for(int i = 3 ; i <=target ;i++){ res = temp1+temp2 ; temp1 = temp2 ; temp2 = res ; } return res ; } }
相关文章推荐
- 自定义指令directive的作用域和绑定策略
- JavaScript弹新窗口
- 【HTML】仿淘宝五星评价显示任何分数
- [已解决] jquery只能取得表格的第一行的第一个单元格数值
- js封装获取标签处理操作 ,ajax,ready()方法
- 【剑指offer】二,变态跳台阶(java实现)
- 关于html中li的问题
- js知识点
- TOM大叔的几道Javascript题目与解答
- 【剑指offer】一,跳台阶(java实现)
- 学习JS(6)
- html事例
- 24.Swap Nodes in Pairs
- css盒子模型
- JavaScript(js)
- javascript学习—理解addLoadEvent函数
- bootstrap
- jQuery--编辑表格
- 【javascript】箭头函数
- struct file和struct inode