zoukankan      html  css  js  c++  java
  • 剑指Offer-矩形覆盖

    题目描述

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

    思路

    当n=1,$f(n)=1$

    当n=2,$f(n)=2$

    当n>2时,当第一个小矩形横着放时,摆法有$f(n-1)$

    当第一个小矩形竖着放时,摆法有$f(n-2)$

    $f(n)=f(n-1)+f(n-2)$

    思路一:

    用递归求解

    思路二:

    用迭代求解

    代码实现

    package Recursion;
    
    /**
     * 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
     * 思路:
     * 当n=1,f(n)=1
     * 当n=2,f(n)=2
     * 当n>2时,当第一个小矩形横着放时,摆法有f(n-1)
     * 当第一个小矩形竖着放时,摆法有f(n-2)
     * f(n)=f(n-1)+f(n-2)
     */
    public class Solution06 {
        public static void main(String[] args) {
            Solution06 solution06 = new Solution06();
            System.out.println(solution06.RectCover(5));
        }
    
        /**
         * 用递归的方法
         *
         * @param target n
         * @return 摆法
         */
        public int RectCover(int target) {
            int sum;
            if (target < 1) {
                return 0;
            } else if (target == 1) {
                return 1;
            } else if (target == 2) {
                return 2;
            } else {
                sum = RectCover(target - 1) + RectCover(target - 2);
                return sum;
            }
        }
    
        /**
         * 迭代的方法
         *
         * @param target
         * @return
         */
        public int RectCover_2(int target) {
            int a = 1, b = 2, c = 0;
            if (target < 1) {
                return 0;
            } else if (target <= 2) {
                return target;
            } else {
                for (int i = 0; i < target - 2; i++) {
                    c = a + b;
                    a = b;
                    b = c;
                }
                return c;
            }
        }
    }
    
    
  • 相关阅读:
    Golang Channel用法简编
    一个有关Golang变量作用域的坑
    Goroutine是如何工作的
    Go语言是如何处理栈的
    Go与C语言的互操作
    Lua虚拟机初始化
    lua 函数调用 -- 闭包详解和C调用
    c++对象导出到lua
    nginx缓存设置proxy_cache
    golang中map并发读写问题及解决方法
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/8623143.html
Copyright © 2011-2022 走看看