您的位置:首页 > Web前端

剑指offer9 变态跳台阶

2015-12-04 10:51 344 查看
先列举一个表格

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