剑指offer9 变态跳台阶

来源:互联网 发布:高端黑 知乎 编辑:程序博客网 时间:2024/04/24 13:00

先列举一个表格

1 2 3 4 5 

1 2 4 8 16

我们可以看出一个规律,就是每一个最新的n都是前n-1项的加和在加1,从逻辑的角度上也可以解释的通,加的那个1就是直接跳n级台阶,那为什么加上前面的n-1项呢,因为你想跳到第n级从第几级跳都有可能,所以把前面所有的都加上在加一个从第0级跳的数目1就是最终结果了,但是打表之后看到的结果就是2的多少次方,我们可以用一个最粗暴的方法就是直接返回2的阶乘就ok了.


#include "iostream"#include "stdio.h"using namespace std;class Solution {public:    int jumpFloorII(int number) {    int i,j;    for(i=0;i<50;i++)    num[i] = 0;        num[0] = 0;    num[1] = 1;        for(i=2;i<50;i++)    {    for(j=0;j<i;j++)    {    num[i] += num[j];    }    num[i]+=1;    }    return num[number];    }public:int num[50];};int main(){Solution test;int result;result = test.jumpFloorII(5);cout<<result<<endl;return 0;}


0 0