• 矩形覆盖


    题目:我们可以用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放在方法之外了,即 } 符号之外~

  • 相关阅读:
    linux常用的基础知识
    【AW346】走廊泼水节
    【AW355】异象石
    【POJ3417】闇の連鎖
    【APIO2010】巡逻
    【SDOI2011】消防
    【BJWC2010】次小生成树
    【POJ3613】Cow Relays
    【POJ1734】Sightseeing trip
    【POJ1094】Sorting it all out
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10533402.html
Copyright © 2020-2023  润新知