10.2.矩形覆盖+跳台阶

一:矩形覆盖

一:题目描述:

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

二:解题思路:

通过题目我们可以发现当n变化是会有以下规律:
n的值 大矩形的数量
n = 1 1
n = 2 2
n = 3 3
n = 4 5
.
.
.
f(n) f(n-1)+f(n-2);

所以通过以上规律可得当n>2之后,f(n) = f(n-1) + f(n-2);
在这里插入图片描述
因此可以看出这是斐波那契数列的一种变形

三:代码

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

/*
    思路分析:
        n = 1;  1种
        n = 2;  2
        n = 3;  3
        n = 4;  5

        f(n) = f(n-1)+f(n-2);(n>2)
 */
public class Demo10_2 {

    public static void main(String[] args) {
        int n = 4;
        int fib = fib(n);
        System.out.println(fib);

    }

    public static int fib(int n){
        int fib1 = 1;
        int fib2 = 2;
        int fib = 0;

        for (int i = 2;i<n;i++){
            fib = fib1 +fib2;
            fib1 = fib2;
            fib2 = fib;
        }

        return fib;
    }

}

二:跳台阶

一:题目描述

一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

二:题目分析

当n = 1时:只有一种
n = 2 2种
n = 3 3种
n = 4 5种
f(n) = f(n-1)+f(n-2);
青蛙跳台阶
因此这也是斐波那契数列的一种变形,代码与上同!!!

发布了24 篇原创文章 · 获赞 5 · 访问量 2050

猜你喜欢

转载自blog.csdn.net/weixin_43288447/article/details/104327577