
面试题 08.01. 三步问题
发布日期:2021-05-18 05:02:44
浏览次数:7
分类:精选文章
本文共 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的值
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月21日 16时31分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
echarts 基本图表开发小结
2019-03-11
adb通过USB或wifi连接手机
2019-03-11
JDK9-15新特性
2019-03-11
TreeSet、TreeMap
2019-03-11
JVM内存模型
2019-03-11
可变长度参数
2019-03-11
3、条件查询
2019-03-11
cordova打包apk更改图标
2019-03-11
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2019-03-11
页面置换算法
2019-03-11
文件系统的层次结构
2019-03-11
减少磁盘延迟时间的方法
2019-03-11
vue(渐进式前端框架)
2019-03-11
权值初始化和与损失函数
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
Gradle实战四:Jenkins持续集成
2019-03-11
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2019-03-11
iOS 开发官方文档链接收集
2019-03-11
MFC 自定义消息发送字符串
2019-03-12