跳台阶
题目链接
Solution
每次可以跳上1级台阶,也可以跳上2级。求跳到n级的台阶总共有多少种跳法。
dp可以解决此类计数问题。
设f[i]表示到第i层台阶的方案数,显然
f
1
=
1
f_1 = 1
f1=1,
f
2
=
2
f_2 = 2
f2=2;
有递推式:
f
[
n
]
=
f
n
−
1
+
f
n
−
2
f[n] = f_{n - 1} + f_{n-2}
f[n]=fn−1+fn−2
所以
O
(
n
)
O(n)
O(n)递推一下即可。
class Solution {
public:
int jumpFloor(int number) {
if (number == 1) return 1;
else if (number == 2) return 2;
else return jumpFloor(number - 1) + jumpFloor(number - 2);
}
};