剑指offer-矩形覆盖

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
乍一看、、唔、、动态规划
再一看、、唔、、怎么动态,怎么规划、、
隐隐觉得跟剑指offer前边的青蛙跳台阶有关系,然鹅、只有直觉是木有用的、找了半天没有找到怎么划分子问题,怎么找动态转移方程。
然后一翻大家的解法,唉,还是我太菜,算法路上任重道远啊、
 
 
【解题思路】
我们来分析这个变量n,如果<=0,那肯定要返回0的
            如果n=1,也很肯定只有1种方法
            如果n=2,那也是肉眼可见的只有2种方法,请自行画图理解
重点是当n>2时,第一个小矩形只有两种方法,下图所示,当第一个矩形如图1放置时,问题就变为f(n-2),当第一个矩形如图2放置时,问题就变为f(n-1)
 
* *      
         
 
 
*        
*        
 
##是不是很简单,对,然而我这个猪脑依然是没想出来##

public
class Solution { public int RectCover(int target) { if(target <= 0) return 0; if(target == 1){ return 1; } if(target == 2){ return 2; }else{ return RectCover((target-1))+RectCover(target-2); } } }

猜你喜欢

转载自www.cnblogs.com/April1995/p/9556093.html
今日推荐