变态跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
动态规划思想:
dp(i)
表示上i级台阶的跳法,要达到第
i
级台阶,则由
维持数组
F[i]
,并且设置一个变量
sum
计算
F[1]+F[2]+...+F[i−1]
代码
class Solution {
public:
int jumpFloorII(int number) {
//F(n)=F(1)+F(2)+...+F(n-1)+1
vector<int> F(number+1);
F[0] = 0;
F[1] = 1;
int sum = 0;
for(int i=2; i<=number; i++){
sum += F[i-1];
F[i] = 1+sum;
}
return F[number];
}
};