IT面试

剑指offer(十)矩形覆盖

2018-08-06  本文已影响6人  z七夜

写在前面:

为了增长一下自己的数据结构能力,也为了面试准备,准备将剑指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

上一篇下一篇

猜你喜欢

热点阅读