Java 动态规划 Licode面试题 08.01. 三步问题

 代码展示:

class Solution {int mod=(int)1e9+7;public int waysToStep(int n) {//特殊情况处理if(n==1||n==2){return n;}if(n==3){return 4;}//定义dp数组int[]dp=new int[n+1];//初始化dp[1]=1;dp[2]=2;dp[3]=4;for(int i=4;i<=n;i++){dp[i]=((dp[i-1]+dp[i-2])%mod+dp[i-3])%mod;}return dp[n];}
}

        分析:

        1.要采用动态规划的方法,首先就要分析该题目状态的表示

        我先列出1-5阶台阶的方式数,再来解释其中的规律

台阶数:1 2 3 4 5

方式数:1 2 4 7 13

        当台阶数为1时,小孩可以直接上1阶,就1种方式

         当台阶数为2时,小孩可以直接上2阶,也可以上到第1阶台阶再上第2阶台阶,而上到第1阶台阶的方式有1种,所以加起来有2种方式

        当台阶数为3时,小孩可以直接上3阶,也可以上到第1阶台阶再上到第3阶台阶,而上到第1阶台阶的方式有1种,还可以上到第2阶台阶再上到第3阶台阶,而上到第2阶台阶的方式有2种,所以加起来有1+1+2=4种方式

        当台阶数为4时,小孩不能直接上到4阶,但可以上到第1阶台阶再上到第4阶台阶,而上到第1阶台阶的方式有1种,还可以上到第2阶台阶再上到第4阶台阶,而上到第2阶台阶的方式有2种,还可以上到第3阶台阶再上到第4阶台阶,而上到第3阶台阶的方式有4种所以加起来有1+2+4=7种方式

        当台阶数为5时,小孩不能直接上到5阶,但可以上到第2阶台阶再上到第5阶台阶,而上到第2阶台阶的方式有2种,还可以上到第3阶台阶再上到第5阶台阶,而上到第3阶台阶的方式有4种,还可以上到第4阶台阶再上到第5阶台阶,而上到第4阶台阶的方式有7种所以加起来有2+4+7=13种方式

        我们推算到这里便已经发现规律了,当台阶数为4时,方式数为台阶数为3,2,1方式数的总和,当台阶数为5时,方式数为台阶数为4,3,2方式数的总和

       2. 所以我们可以得到动态规划的状态转移方程为dp[i]=dp[i-1]+dp[i-2]+dp[i-3]

       3.创建dp数组,进行初始化(根据分析,在i>3时才能用该状态转移方程,所以初始化dp[1],dp[2],dp[3])

       4.根据状态转移方程从左到右依次填充dp数组

        5.返回dp[n]的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15503.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git安装及初步使用

git的安装 &#xff1a; 在CentOS 7.6环境下可以使用一条语句就能安装git yum -y install git如果上面命令包以下错误&#xff0c;说明权限不够 [leijiefl ~]$ yum -y install git Loaded plugins: fastestmirror You need to be root to perform this command.可以转换成ro…

关于微服务治理的一些理解

关于微服务治理的一些理解 微服务架构存在的意义 根本意义 其主要目的还是为了解耦&#xff0c;提高灵活性和可扩展性&#xff01; 参考&#xff1a;https://zhuanlan.zhihu.com/p/462078779 相比单体 单体架构的性能高于微服务架构&#xff0c;微服务的负载能力低于单体架构…

【uniapp开发小程序】实现点击跳转手机通话 拨打电话功能

效果图&#xff1a; 代码展示&#xff1a; <template><view class"page-map"><view class"btn" click"telFun()" style"text-align: center;">电话咨询</view></view> </template> <script&g…

设计模式--------结构型模式

结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低&#xff0c;满足“合成复用原则”…

如何解决PostgreSQL执行语句长时间卡着不动,不报错也不执行的问题?

1 问题现象 执行SQL语句&#xff0c;卡着不动&#xff0c;不成功也不执行&#xff0c;就像挂住了一样。 truncate table simple; 2 原因分析 一般来说&#xff0c;语句呈现卡着的状态&#xff0c;主要会是两种原因比较多&#xff0c; 原因1&#xff1a;SQL语句是一个耗时操…

Yolov5-Lite + Sort算法实现边缘目标跟踪

文章目录 前言项目结构Sort算法实现卡尔曼跟踪器工具类多目标跟踪器 整合 前言 昨天挖了个坑&#xff0c;那么今天的话把坑填上&#xff0c;只要是实现Sort算法和Yolov5-Lite的一个整合。当然先前的话&#xff0c;我们在Yolov3–Tiny的时候&#xff0c;也做了一个&#xff0c;…

flutter 更新分支内容

有三个分支&#xff0c;主分支&#xff0c;A分支&#xff0c;B分支&#xff0c;别人在B分支开发了内容&#xff0c;我在A分支进行开发。别人在B分支提交了代码&#xff0c;让我去拉下来。这时候我就是需要切到B分支&#xff0c;拉代码下来&#xff0c;然后再回到A分支&#xff…

程序设计相关概念

计算机概念 计算机是根据指令操作数据的设备。具有功能性和可编程性的特点。 功能性&#xff1a;对数据的操作&#xff0c;表现为数据计算、输入输出处理和结果存储等。 可编程性&#xff1a;根据一系列指令自动地、可预测地、准确地完成操作者的意图。 计算机的发展 计算机…

Xcode 15 beta 3 (15A5195k) 发布下载 - Apple 平台 IDE

Xcode 15 beta 3 (15A5195k) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布) 7 月 5 日&#xff08;北京时间今日凌晨&#xff09;已发布。 IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接&#xff1a;https://sysin.org/blog/apple-xcode-15/&#xf…

VSCode使用Remote SSH远程连接Linux服务器【远程开发】

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转载自cpolar极点云…

(02)Cartographer源码无死角解析-(78) ROS数据发布→子图内、子图间、约束与残差发布

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

本地部署 ChatGLM2-6B

本地部署 ChatGLM2-6B 1. 什么是 ChatGLM2-6B2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 ChatGLM2-6B6. 启动 ChatGLM2-6B7. 访问 ChatGLM2-6B8. API部署9. OpenAI 格式的流式 API 部署10. 命令行部署11. ChatGLM2-6B 的推理参数含义 1. 什么是 ChatGLM2-6B Cha…