爬楼梯
爬楼梯
一、题目描述
有n阶楼梯需要爬,每一次只能爬一阶楼梯,或者两阶楼梯。爬到n阶一共有多少方案。
实例:
输入:n = 2
输出:2
1. 1 阶 + 1 阶
2. 2 阶
输入:n = 3
输出:3
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
二、解题思路
发现每次只能走一阶或者两阶。假设一共有f(x)中方案。f(x) = f(x-1) + f(x-2)。x为总共的楼梯数。
三、解题方法
方法1
使用动态规划的方式。将f(x-1) + f(x-2)累加起来即可。当x为0或者1时。发现只用走一步即可到达终点,初始化只有一种方案。
代码实现:
public int climbStairs(int n) {
int p = 0;
int q = 0;
int r = 1;
for(int i = 1; i<=n; i++){
p = q;
q = r;
r = p + q;
}
return r;
}
浙公网安备 33010602011771号