写在前面:
为了增长一下自己的数据结构能力,也为了面试准备,准备将剑指Offer做一下,并与各位分享,希望各位可以对代码以及思路提提建议,欢迎志同道合者,谢谢。
题目
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路
先找规律,我们假设有几行矩形,可以用这个小矩形去覆盖
可以这样0 0
也可以这样0
0
0 0 1种
0 0 2种
0 0 3种
0 0 5种
代码实现
package com.itzmn.offer;
/**
* @Auther: 张梦楠
* @Date: 2018/7/30 08:44
* 简书:https://www.jianshu.com/u/d611be10d1a6
* 码云:https://gitee.com/zhangqiye
* @Description: 使用小矩形覆盖大矩形
*
* 0 0 1
* 0 0 2
* 0 0 3
* 0 0 5
*
*/
public class Offer10 {
public static void main(String[] args) {
int i = new Offer10().RectCover(4);
System.out.println(i);
}
public int RectCover(int target) {
if (target <= 2 && target >=0){
return target;
}
if (target < 0 ){
return 0;
}
return RectCover(target-1)+RectCover(target-2);
}
}
希望大家可以多多指点,优化一下,
QQ群:552113611
网友评论