剑指offer:矩形覆盖
2019-06-29 13:44
609 查看
题目
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路
当n=1时,只能竖着排列,所以f(1)=1
当n=2时,可以横着和竖着两种排列,所以f(2)=2
当排列了n-1块的时候,在加上第n块矩形进来时,此时有两种看法
1)将第n块自己单独排列,那么此时的排列方法数目就是前面n-1块矩形排列的方法数目
2)将第n块和第n-1块组合在一起排列,那么此时的排列方法数目就是前面n-2块矩形的排列方法数目*(第n块和第n-1块两个矩形可以排列的方法数目),本来两个矩形的排列数目有两种,但是若采取竖排的方式则与看法一重复,所以只有唯一一种排列方式就是横排
所以f(n) = f(n-1)+f(n-2)
图形实例
代码
这里只附上递归版本代码,非递归版本可去看斐波那契数列的那篇博文
public int RectCover(int target) { if(target==1||target==2||target==0){ return target; }else{ return RectCover(target-1)+RectCover(target-2); } }
相关文章推荐
- 《剑指offer》矩形覆盖
- 牛客网《剑指Offer》 矩形覆盖
- 矩形覆盖-剑指Offer(Java语言)
- 剑指offer(十)矩形覆盖
- 剑指offer--(10) 矩形覆盖
- 剑指offer(10):矩形覆盖问题
- JAVA实现矩形覆盖问题(《剑指offer》)
- 剑指offer系列源码-矩形覆盖
- 剑指offer——矩形覆盖问题
- 《剑指offer》——矩形覆盖
- 剑指offer系列10之矩形覆盖
- 剑指offer 10 矩形覆盖
- 剑指offer(10)矩形覆盖
- 剑指Offer:10 矩形覆盖
- 《剑指Offer》读书笔记10:矩形覆盖
- 剑指offer系列之九:矩形覆盖问题
- 算法系列——矩形覆盖(剑指offer)
- 矩形覆盖(剑指offer)
- 剑指offer矩形覆盖问题
- 剑指offer——矩形覆盖