题目描述
题目一
:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
变态跳台阶:题目二
:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
实现思路
题目一
:刚接触到这个题目是没有头绪的,观察了一段时间后发现,青蛙的跳法恰好符合Fibonacci sequence(斐波那契数列),于是便有了解决思路。n
个台阶的跳法f(n)=f(n-1)+f(n-2)
。
题目二
:每个台阶可以看作一块木板,让青蛙跳上去,n个台阶就有n块木板,最后一块木板是青蛙到达的位子, 必须存在。其他 n-1
块木板可以任意选择是否存在,则每个木板有存在和不存在两种选择,n-1
块木板 就有2^(n-1)
种跳法,可以直接得到结果。
编程实现
public class Solution {
//基础跳台阶,题目一
public int JumpFloorBase(int target) {
if(target <= 0 ){
return 0;
}
if(target ==1){
return 1;
}
if(target ==2){
return 2;
}
int first=1,second=2,temp=0;
for(int i =3;i<= target;i++){
temp = first+second;
first=second;
second=temp;
}
return second;
}
//变态跳台阶,题目二
public int JumpFloorPlus(int target) {
if(target==1){
return 1;
}
return (int)Math.pow(2,target-1);
}
}
来源:CSDN
作者:lizhenda1024
链接:https://blog.csdn.net/anhao001/article/details/103769797