码迷,mamicode.com
首页 > 其他好文 > 详细

剑指Offer:矩形覆盖【N1】

时间:2018-06-29 01:14:30      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:class   题目   技术分享   分享   分享图片   i++   斐波那契   inf   斐波那契数   

剑指Offer:矩形覆盖【N1】

题目描述

  我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

题目思考

我们先把2*8的覆盖方法记为f(8),用一个2*1的小矩形去覆盖大矩形的最右边时有两种选择,横着放或者竖着放,

此时左边的空间为f(6)或f(7),那么f(8)的放置结果为f(6)【右边横着放】+f(7)【右边竖着放】

  技术分享图片

找规律

  f(n)=f(n-1)+f(n-2),斐波那契数列

Java题解

public class RectCover {
    public static int RectCover(int n) {
        if (n <= 2)
            return n;
        int[] dp = new int[n];
        dp[0] = 1;
        dp[1] = 2;
        for (int i = 2; i < n; i++)
            dp[i] = dp[i - 1] + dp[i - 2];
        return dp[n - 1];
    }

    public static void main(String[] args) {
        System.out.println(RectCover(3));
    }
}

剑指Offer:矩形覆盖【N1】

标签:class   题目   技术分享   分享   分享图片   i++   斐波那契   inf   斐波那契数   

原文地址:https://www.cnblogs.com/MrSaver/p/9241427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!