1.递归的方法: private static int Max(int i) { if (i<=2) { return i; } return Max(i-1)+Max(i-2); } 时间: 2024-11-05 17:32:15
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2);因此n级台阶时的跳法为f(n)=f(n-1)+f(n-2).不难看出这实际是斐波拉契数列的变形应用,把斐波拉契数列的每一项向前移动了1位. 程序:
import java.util.HashMap; //一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. public class Solution { //方法一:递归求解 public static int JumpFloor1(int n) { if(n<1){ return 0; } if(n==1){ return 1; } if(n==2){ return 2; } return JumpFloor1(n-1)+JumpFloor1(n-2)
题目描述: 楼梯有n级台阶,上楼可以一步上1级,也可以一步上2级,计算有多少种不同的走法 其中n<=35 输入描述: 一个正整数n,占一行 输出描述: 一个整数,占一行,问题的结果,数据保证输出在32位有符号整型数据范围内. 样例输入: 20 33 样例输出: 10946 5702887 思想:巧妙利用了分治递归的思想,将大数 化为1和2两种情况,1只有一种情况,2有两种情况,设计巧妙. 1 #include<iostream> 2 using namespace std; 3 int
小明刚刚看完电影<第39级台阶>.离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶.先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步.那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案. #define _CRT_SECURE_NO_WARNINGS#include <string.h>#include <stdlib.h>#include <
开始,我思考成排列组合问题,发现算阶乘时数太大,计算机根本不能正确计算,所以必定有别的方法. 解决办法:把问题拆分,如下: 台阶数为 方案 方案种数 1 1 1 2 1-1,2 2 3 1-1-1,1-2,2-1 3 4 1-1-1-1,1-1-2,1-2-1,2-1-1,2-2 5 ... ..... ... n=(n-1)+(n-2) 就是斐波那契数列,那就好算了. 由此题引出动态规划算法.相关思想就是:动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段)
有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完? 相关问题: (1)有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?例如:总共3级台阶,可以先迈1级再迈2级,或者先迈2级再迈1级,或者迈3次1级总共3中方式. (2)有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法? (3)一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.如果所有兔子都不死
package ms100; /** * 一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度 *注: 这道题最近经常出现,包括MicroStrategy 等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题. 首先我们考虑最简单的情况: 如果只有1 级台阶,那显然只有一种跳法, 如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级:另外一种就是一次跳2 级. 现在我们再来讨论一般情况: 我们把n 级台阶时的跳法看成是n
By Long Luo 个人博客链接 最近去面试时,在一家小公司面试时,公司小BOSS给我出了一道算法题: 一个人爬楼梯,一步可以迈一级,二级,三级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法. 这个问题应该是一个很老的题目了,用中学数学来说,就是一个排列组合问题.当时拿到这个题目之后,首先想到使用递归的思想去解决这个问题: N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之和. 先计算下0,1,2,3及楼梯有多少种走法: 1 --> 1 2 --> 11 2
在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 超级楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 652 Accepted Submission(s): 483 Problem Description