剑指offer(9)—变态跳台阶

来源:互联网 发布:sql存储过程返回值 编辑:程序博客网 时间:2024/05/29 11:01

变态跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路

动态规划思想:dp(i)表示上i级台阶的跳法,要达到第i级台阶,则由i1跳1级、或i2跳2级,…,1级跳n1级,以及一次性跳i级,则dp(i)=1+dp(i1)+dp(i2)+...+dp(2)+dp(1),初始条件:dp(1)=1
维持数组F[i],并且设置一个变量sum计算F[1]+F[2]+...+F[i1]

代码

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];    }};
原创粉丝点击