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); } //方法二:备忘录算法 public static int JumpFloor2(int n,HashMap<Integer,Integer> map) { if(n<1){ return 0; } if(n==1){ return 1; } if(n==2){ return 2; } if(map.containsKey(n)){ return map.get(n); }else{ int value=JumpFloor2(n-1, map)+JumpFloor2(n-2, map); map.put(n, value); return value; } } //方法三:动态规划求解 public static void main(String[] args){ HashMap map=new HashMap(); System.out.println(Solution.JumpFloor1(40)); System.out.println(Solution.JumpFloor2(40,map)); } }
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
原文:http://www.cnblogs.com/boguse/p/7583149.html