剑指offer——第10题——覆盖矩形
2019-05-10 09:40
99 查看
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
既然是长条形的,那么从后向前,最后一个矩形2*2的,只有两种情况:
第一种是最后是由一个2*(n-1)的矩形加上一个竖着的2*1的矩形
另一种是由一个2*(n-2)的矩形,加上两个横着的21的矩形
因此我们可以得出,
第2n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。
1、递归
2、迭代
public class Solution { //递归 public int RectCover(int target) { if(target<0){ return -1; } if(target<=2){ return target; } return RectCover(target-1)+RectCover(target-2); } //非递归 public int RectCover2(int target) { if(target<0){ return -1; } if(target<=2){ return target; } int result=0; int number1=1; int number2=2; for(int i=2;i<target;i++){ result=number1+number2; number1=number2; number2=result; } return result; } }
相关文章推荐
- 剑指offer——矩形覆盖问题
- 矩形覆盖-剑指Offer(Java语言)
- 《剑指Offer》读书笔记10:矩形覆盖
- 剑指offer系列之九:矩形覆盖问题
- 《剑指offer》矩形覆盖
- 《剑指offer》矩形覆盖
- JAVA实现矩形覆盖问题(《剑指offer》)
- 剑指Offer——矩形覆盖
- 剑指offer系列10之矩形覆盖
- 算法系列——矩形覆盖(剑指offer)
- 剑指offer(10)矩形覆盖
- 剑指offer---矩形覆盖
- 剑指offer:矩形覆盖&二进制中1的个数&数值的整数次方
- 剑指offer系列-T9_4矩形覆盖
- JAVA实现矩形覆盖问题(《剑指offer》)
- 剑指offer(九,十) 变态跳台阶,矩形覆盖
- 剑指Offer(13)矩形覆盖问题(Fibonacci)
- 牛客网-《剑指offer》-矩形覆盖
- 矩形覆盖(剑指Offer)
- 剑指offer 矩形覆盖