zoukankan      html  css  js  c++  java
  • 矩形覆盖

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

     1 public class Solution {
     2     public int RectCover(int target) {
     3         int a  = 0;
     4         if (target < 1)
     5             a = 0;
     6         if (target == 1)
     7             a = 1;
     8         if (target == 2)
     9             a = 2;
    10         if (target >= 3)
    11             a = RectCover(target-1)+RectCover(target-2);
    12         return a;
    13     }    
    14 }

    return的值必须在方法之内

    该题思考后为用任意1和2相加得到n的方法总数

    此外,此处思考时逆向思考,对于n>=3的情况,假设最后一步是占了一列的覆盖法,则为f(n-1)种方法,即前n-1列的覆盖方式;

    假设最后一步是占了两列的覆盖法,则为f(n-2)种方法,即前n-2列的覆盖方法,故其为法f(n) = f(n-1)+f(n-2);

    if语句的另一种:

     1 public class Solution {
     2     public int RectCover(int target) {
     3         int a  = 0;
     4         if (target < 1)
     5             a = 0;
     6         else if (target == 1)
     7             a = 1;
     8         else if (target == 2)
     9             a = 2;
    10         else
    11             a = RectCover(target-1)+RectCover(target-2);
    12         return a;
    13     }    
    14 }

    illegal start of type错误:因为之前将return放在方法之外了,即 } 符号之外~

  • 相关阅读:
    属性选择器
    优先级
    hj_html&css
    hj_解决gpedit.msc不存在的问题
    hj_designPatterns
    hj_ssm
    hj-springmvc
    hj_mybatis
    hj_Python踩坑之旅
    hj_Python学习笔记
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10533402.html
Copyright © 2011-2022 走看看