【常见笔试面试算法题12续集一】动态规划算法案例1台阶问题练习题

加qq1126137994 一起学习更多技术!!!

以下问题,都可以用非动态规划的方法做,我为了整理动态规划的方法思路,就全部用动态规划的思路来解决问题,这样还可以简化问题的处理,是时间复杂度更低!!!

动态规划的核心思想,就是化简问题,将整个问题,分解,从最简单的问题开始计算,慢慢累加,最终,便可以达到求得整体问题的答案,这期间,是需要另外开辟空间的,所以说,动态规划,是以空间,换时间的解决方法!!!

案例一:台阶问题练习题

有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

测试样例:
1
返回:1

这道题比较简单,我们从最简单的问题入手,如果台阶为n级,那么可以分为下面n种情况:
爬到1级台阶:1种方法
爬到2级台阶:2种方法:从2-1=1级开始爬或者从2-2=0级开始爬
爬到3级台阶:3种方法:从3-1=2级开始爬(但是爬到2级是2种方法),或者从3-2=1级开始爬(爬到1级是1种方法),2+1=3;


爬到n级台阶:f[n-1]+f[n-2]种方法,而这f[n-1]与f[n-2]是前面求过了的,到这里,可直接计算

上面的过程,可简化为一个一维矩阵dp[n],爬到n级台阶需要的方法数。如下图:
这里写图片描述

代码如下:

class GoUpstairs {
public:int countWays(int n) {// write code hereif(n<=2)return n;int res[n+1];res[1]=1;res[2]=2;for(int i=3;i<n+1;i++){res[i]=(res[i-1]+res[i-2])%1000000007;}return res[n];}
};

(注意:上题还可以用递归方法做,但是时间复杂度就会高一些,动态规划就是由递归方法优化而来的)

这里写图片描述

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

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

相关文章

linux 思维导图

工作中使用总结的linux 分享一下

ADO.NET 3.5 Cookbook:一、连接数据(1)保存连接字符串

问题 转载于:https://www.cnblogs.com/PocketZ/archive/2010/04/27/1722555.html

【常见笔试面试算法题12续集二】动态规划算法案例2矩阵最小路径和练习题

加qq1126137994 一起学习更多技术&#xff01;&#xff01;&#xff01; 有一个矩阵map&#xff0c;它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走&#xff0c;最后到达右下角的位置&#xff0c;路径上所有的数字累加起来就是路径和&#xff0c;返回所有的…

mysql数据库思维导图

先前总结的一下数据库的思维导图&#xff0c;和大家分享一下&#xff0c;持续更新&#xff1b; 最近面试数据仓库工程师&#xff0c;过程中&#xff0c;问到索引类型&#xff0c;只是记得&#xff0c;普通索引&#xff0c;唯一索引&#xff0c;还有主键&#xff0c;面试中让说…

【常见笔试面试算法题12续集三】动态规划算法案例分析3 LIS练习题(最长上升子序列)

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 这是一个经典的LIS(即最长上升子序列)问题&#xff0c;请设计一个尽量优的解法求出序列的最长上升子序列的长度。 给定一个序列arr及它的长度n(长度小…

数据思维

最近听的一本书&#xff0c;《数据思维》&#xff1a;分享一下 1.【数据定义】 能被电子化的叫做数据&#xff0c;滴滴司机数据化&#xff0c;ofo数据化&#xff0c;堵车数据化&#xff0c;太形象了&#xff0c;数据以后会是电&#xff1b; 注意&#xff01;数据与自己业…

【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 给定两个字符串A和B&#xff0c;返回两个字符串的最长公共子序列的长度。例如&#xff0c;A"1A2C3D4B56”&#xff0c;B"B1D23CA45B6A”&am…

MSMQ(MicroSoft Message Queue,微软消息队列)

MSMQ(MicroSoft Message Queue&#xff0c;微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式&#xff0c;相互通信的应用可以分布于同一台机器上&#xff0c;也可以分布于相连的网络空间中的任一位置。它的实现原理是&#xff1a;消息的发送者把自己想要发送…

hive 思维导图

1.整理了word文档&#xff0c;但是感觉没有思维导图清晰 &#xff0c;持续更新中 ​ hive 工作中分享。

【常见笔试面试算法题12续集五】动态规划算法案例分析5 01背包练习题

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 一个背包有一定的承重cap&#xff0c;有N件物品&#xff0c;每件都有自己的价值&#xff0c;记录在数组v中&#xff0c;也都有自己的重量&#xff0c;…

结构思考力思维导图

个人提升&#xff0c;喜欢钻研的同时&#xff0c;需要增加一下&#xff0c;其他方面的知识&#xff0c;分享一下&#xff1a;

我的JavaScript for Visual Studio插件开源了

最近忙于别的事情&#xff0c;我的JavaScript for Visual Studio插件一直没有做什么更新了很是对不起大家。不过觉得这个东西如果做好的话对大家还是有帮助的&#xff0c;所以我还是把代码share出来&#xff0c;这样大家可以一起来扩展&#xff0c;人多力量大嘛我希望大家一起来…

常用内存分配函数的说明

下面哪种C/C 分配内存的方法会将分配的空间初始化为0 A malloc() B calloc() C realloc() D new[ ] 1) malloc 函数&#xff1a; void *malloc(unsigned int size) 在内存的动态分配区域中分配一个长度为size的连续空间&#xff0c;如果分配成功&#xff0c;则返回所分配…

前端学习(120):css精灵和好处

精灵图的目的&#xff1a;很多大型网站在首次加载的时候需要加载很多小图片&#xff0c;如果在同一时间&#xff0c;服务器又拥堵的话&#xff0c;就会导致页面加载慢。为了解决这一问题&#xff0c;就用了精灵图来解决加载时间过长影响用户体验的问题。 精灵图的本质&#xf…

Windows 2008上安装VS2008SP1时的怪异错误

由于重做系统&#xff0c;需要重新安装开发工具&#xff0c;于是开始了坚苦而漫长的安装。 不料在安装VS 2008 SP1时&#xff0c;安装到Microsoft .net framework 3.5 SP1时出错了&#xff0c;我就感觉纳闷了&#xff0c;这种安装过程我都安装了N次了还没出过什么错&#xff0c…

【常见笔试面试算法题12续集六】动态规划算法案例分析6 最优编辑练习题

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 对于两个字符串A和B&#xff0c;我们需要进行插入、删除和修改操作将A串变为B串&#xff0c;定义c0&#xff0c;c1&#xff0c;c2分别为三种操作的代价…

shell 思维导图

分享一下&#xff1b;

《大败局》读书笔记

史玉柱犯了一个很多青年企业家都容易犯的错误&#xff1a;把预期的利润当成了实际的收益&#xff0c;并以此为基数来设定自己的规划。 制度重于技术。 秩序重于利益。 职业人格缺陷。 市场是很公平的&#xff0c;你怎么从暴利中得来的钱&#xff0c;你得再怎么赔进去。 如果管理…

计数排序的应用----排序字符串

加qq1126137994 微信&#xff1a;liu1126137994 一起学习更多技术&#xff01;&#xff01;&#xff01; 题目&#xff1a; 给你一个原始字符串&#xff0c;根据该字符串内每一个字符串出现的次数&#xff0c;按照ASCII码递增的排序重新调整输出。 举例: eeefgghh 则每种字…