剑指offer编程题 变态跳台阶

题目描述

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

f(n) 表示上n级台阶有多少种上法

f[n] = f[n-1] + f[n-2]...+f[1] + f[0]          // f[0] = 1

可以证明 f(n) = 2^(n-1)

这里直接用迭代的方式解决

class Solution {

public:
    int jumpFloorII(int number) {
        int arr[100000];
        arr[0]=0,arr[1]=1,arr[2]=2;
        for(int i=3;i<=number;i++){
            Fn(arr,i);
        }
        return arr[number];
    }
    
    void Fn(int arr[], int n){
        arr[n] = 1;
        for(int i=1;i<=n-1;i++){
            arr[n]+=arr[i];
        }
    }
};

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/90039526