您的位置:首页 > Web前端

【剑指offer-解题系列(9)】变态跳台阶

2017-05-17 18:05 281 查看


题目描述

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


分析

假设 a
是跳上n级台阶的总步数
1、青蛙可以一次猛跳上n级!
2、青蛙可以在前n-1级台阶找出 a[n-1] 种跳法,然后最后跳1步,总共a[n-1]种;
3、青蛙可以在前n-2级台阶找出 a[n-2] 种跳法,然后最后跳2步,总共a[n-2]种;

4、青蛙可以在前n-3级台阶找出 a[n-3] 种跳法,然后最后跳3步,总共a[n-3]种;

。。。。。。使用a数组保存之前的计算结果就行。

所以:a
=1 +  a[n-1]+a[n-2]+a[n-3]+...+a[1]; 


代码实现

    int jumpFloorII(int number) {

        if(number<=0)return 0;

        int*a = new int[1+number];

        memset(a,number,0);

        int res = jumpFloorII(number, a ); 

        delete[]a;

        return res;

    }

    

    int  jumpFloorII(int number, int *a ){ 

        if(number==0)

            return 0;

        if(number==1){

            a[1]=1;

            return a[1];

        }

        else{

            for(int i = 1;i<number;i++){

                if(a[i]==0){

                    a[i] =  jumpFloorII(i,a );

                }  

                a[number]+=a[i];

            } 

            a[number]++;

        }

        return a[number]; 

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: