博客
关于我
面试题 08.01. 三步问题
阅读量:640 次
发布时间:2019-03-15

本文共 659 字,大约阅读时间需要 2 分钟。

文章目录

题目描述

图片描述已移除

方法一:动态规划

思路

改题存在如下递推关系:

f(n) = f(n-1) + f(n-2) + f(n-3)
即上 n 个台阶的总方式数等于跳一个台阶到最后一个台阶的方式数,加上跳两个台阶到最后一个台阶的方式数,再加上跳三个台阶到最后一个台阶的方式数。
相当于“三阶斐波那契数”。

初始化: f1= 1,f2=2,f3=4

迭代实现的代码如下,由于结果可能很大,所以f1,f2,f2,fn的类型定义为long,并且在每次计算fn时做了取余操作。该题递归实现会超时。

代码

class Solution {    public:    int waysToStep(int n) {            long f1 = 1, f2 = 2, f3 = 4, fn;        if (n <= 2) {                return n;        }        else if (n == 3) {                return 4;        }        for (int i = 3; i < n; ++i) {                fn = (f1 + f2 + f3) % 1000000007;            f1 = f2;            f2 = f3;            f3 = fn;        }        return fn;    }};

返回的结果是fn的值

转载地址:http://srzmz.baihongyu.com/

你可能感兴趣的文章
superset报错
查看>>
Hive 分组取Top N
查看>>
yarn开启Label Scheduler
查看>>
Spark sample入门到精通
查看>>
C++ Primer Plus【复习笔记】-【复合类型】
查看>>
前端一些要会的知识点
查看>>
VUE +ElementUI form表单回车提交
查看>>
使用Spring AOP应该注意的一个小细节
查看>>
学习Swoole之进程队列之间通信
查看>>
docker 快速安装bcmath扩展
查看>>
2020-08-26
查看>>
shell脚本一键删除php7.4.8
查看>>
vue 基础之计算属性
查看>>
nginx服务器部署Thinkphp 5.1框架报404解决方案
查看>>
Tomcat内存溢出解决方案
查看>>
上传按钮的设计
查看>>
诡异现象使用Validator表单验证时 return back()->withErrors()在视图无法获取错误信息
查看>>
thinkphp 的一些重要知识点
查看>>
Shell脚本中的 /Dev/Null 用途
查看>>
keepalived+nginx搭建高可用几个注意点
查看>>