• 剑指Offer--矩形覆盖


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

    思路:2*n的大矩阵和2*1的小矩阵

           n=1时,大矩阵与小矩阵一样大,只有一种方法

           n=2时,排序方法有=,||两种形式(—和|代表一个横着和竖着2*1的小矩形),有两种方法

           n>2时,分情况考虑(1)小矩形第一次摆放形式:|  ,则摆放方法共有f(n-1)种

                (2)小矩形第一次摆放形式:—,则摆放方法共有f(n-2)种,因为—形式的摆放,其下方的摆放方法就确定了。

           由此可见,这是一个斐波那契数列。

    代码:

    public class Solution{
      public int RectCover(int target){
        if(target<1)
          return 0;
        else if(target==1||target==2)
          return target;
        else
          return RectCover(n-1)+RectCover(n-2);
      }
    }    
  • 相关阅读:
    LeetCode(122. 买卖股票的最佳时机 II)
    LeetCode(485. 最大连续1的个数)

    约瑟夫问题
    链表
    队列
    稀疏数组
    乐优商城项目学习
    LeetCode_Climbing Stairs
    数据结构&&算法基础知识
  • 原文地址:https://www.cnblogs.com/xiaoxli/p/9455189.html
Copyright © 2020-2023  润新知