剑指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;
}
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;
}
相关文章推荐
- app bootstrap font icon
- JS运动--分享到空间代码样式
- 初学LESS
- jquery.validate ie8 验证提交问题
- Sublime2配置less2css插件教程
- javascript模板引擎——artTemplate
- svn迁移gitlab,构建前端打包发布流程
- Pixel VS Point, FrameBuffer VS RenderBuffer
- 原生js版ajax请求
- LintCode-剑指Offer-(4)丑数
- jQuery旋转木马式幻灯片轮播特效
- selenium获取html的表格单元格数据
- ajax与HTML5 history pushState/replaceState实例
- ExtJs 告警弹窗
- bootstrap modal动态加载内容
- jquery.js 库中的 选择器 的 事件的绑定
- jQuery中cookie插件用法实例分析
- Web开发者需养成的好习惯有哪些
- jQuery中this与$(this)的区别
- 常用的jquery