package NC;
/**
* NC68 跳台阶
*
* 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
*
* 数据范围:
* 要求:时间复杂度:O(N) ,空间复杂度:O(1)
*
* @author TANG
* @date 2021/9/28
*/
public class JumpFloor {
/**
* 动态规划
* x :台阶层数x
* f(x) :对于台阶数x,有多少种跳法
* f(x) = f(x-1) + f(x-2)
* base : f(1) = 1 f(2) = 2
*
* @param target
* @return
*/
public int jumpFloor(int target) {
//f(x-1)
int x1 = 0;
//f(x-2)
int x2 = 0;
int result = 0;
for(int i = 1; i <= target; i++){
if(i == 1) {
x2 = 1;
result = 1;
continue;
}
if(i == 2) {
x1 = 2;
result = 2;
continue;
}
result = x1 + x2;
x2 = x1;
x1 = result;
}
return result;
}
public static void main(String[] args) {
}
}