首页 > 递归和循环:跳台阶和变态跳台阶和矩形覆盖

递归和循环:跳台阶和变态跳台阶和矩形覆盖

题目描述

跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

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

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

解题思路

看到这样的题,基本上都是一脸蒙蔽,但是其实这样的题,一般都是有规律的,没有规律,那还怎么计算,这个时候学的数学就有用了,找规律。

跳台阶:

1级台阶:1,共1种,

2级台阶:2,11 共2种

3级台阶:12,21,111 共3种

4级台阶:22,211,121,112,1111 共5种

5级台阶:221,212,122,2111,1211,1121,1112,11111共8种

.....看出来规律了fn=f(n-1)+f(n-2)

变态跳台阶:

1级台阶:1,共1种,

2级台阶:2,11 共2种

3级台阶:3,21,12,1111 共4种

4级台阶:4,31,13,22,211,121,112,1111 共8种

5级台阶:5,41,14,32,23,311,131,113,221,212,122,2111,1211,1121,1112,11111共16种

.....看出来规律了fn=2f(n-1)

矩形覆盖:

1的矩阵:1,共1种

2的矩阵4平:2*2,1111,共2种

3的矩阵9平:2*2 + 2*2 + 1, 2*2 + 1*5, 1*9共3种

4的矩阵16平:2*2*4, 2*2*3+1*2, 2*2*1+1*4(2种,2挨着和不挨着), 1*16共5种

.......规律了fn=f(n-1)+f(n-2),可以看出和跳台阶一样

代码实现

        /// /// 循环跳台阶/// /// /// public static int Jump(int n) {if (n <= 2) {return n;}int first = 1;int second = 2;int result = 0;for (int i = 3; i <= n; i++) {result = first + second;first = second;second = result;}return result;}/// /// 变态跳台阶/// /// /// public static int Jump(int n) {if (n <= 1) {return n;}int first = 1;int result = 0;for (int i = 2; i <= n; i++) {result = 2 * first;first = result;}return result;}

想入非非:扩展思维,发挥想象

1. 数学不要忘,学会找规律

2. 不要动不动就用递归

转载于:https://www.cnblogs.com/zhao123/p/11158820.html

更多相关:

  • 题目:青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示: 0...

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • MysqlHelper.class.php 1: