zoukankan      html  css  js  c++  java
  • 剑指offer:矩形覆盖

    一、题目描述

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

    二、解题思路

      使用归纳法分析有以下情况:

      当n<=0时:直接返回0

      当n=1时:只要一种解法" | ",返回1

      当n=2时:有两种解法"="和 "| | "

      当n=3时:有 "= |"  "| ="  "| | |" 

      同理当n=4的时候只要在n=3的基础上加一个2*1矩形可得 "= | |"    "| = |"  "| | | |"

      "= =" "| | ="

      所以可以推出递推关系式为f(n) = f(n-1) + f(n-m),(n > m)。

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

      

  • 相关阅读:
    第四次博客
    第三次作业
    第二次作业
    入学的第一次作业
    第四次作业
    第三次作业
    第二次随笔作业
    第一次随笔
    第四次作业
    第三次作业
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/12237054.html
Copyright © 2011-2022 走看看