题目来自极客学院的视频教程-动态规划(一)

一句话解释动态规划:多阶段最优化决策解决问题的过程

解题技巧:只关注状态转移(子问题之间的关系),不要考虑某个状态是怎么出现的

1.字符串解码

一个只包含大写字母的字符串加密后变成了只包含数字的字符串,加密的规则:

'A' -> 1

'B' -> 2

...

'Z' -> 26

现在给定一个只包含数字的加密过的字符串,求该字符串有多少种解密的方法。例如“12”->"AB", "12"->"L"

解:2位的在26以内的相邻的数可以产生不同的解,字符串用str表示,用一维数组dp[i]来表示从0到i位解码方法总数,dp[0]=1,想从dp[i]得到dp[i+1]:

1.str[i+1]是‘0’,那么他不能单独译成一个字母,一定是和str[i]组合,dp[i+1] = dp[i-1]

2.str[i+1]不是‘0’:

1)str[i]和str[i+1]位不能组成一个字母,将str[i+1]解码为对应的字母,dp[i+1] = dp[i]

2)str[i]和str[i+1]可以组和译成一个字母,则在这里就可以出现2种解码方法,如果单独译dp[i+1],有dp[i]种方法,如果组合起来,有dp[i-1]种方法,那么dp[i+1] = dp[i]+dp[i-1]

代码:

int Decode_num(string& str) {int len = str.length();int *dp = new int[len];dp[0] = 1;if (str[1] == '0') dp[1] = 1;else if (str[0] == '1' || (str[0] == '2' && str[1] <= '6')) dp[1] = 2;else dp[1] = 1;for (int i = 1; i < len-1; i++) {if (str[i+1] == '0') dp[i+1] = dp[i-1];else if (str[i] == '1' || (str[i] == '2' && str[i+1] <= '6')) dp[i+1] = dp[i] + dp[i-1];else dp[i+1] = dp[i];}return dp[len-1];
}

2.最大子数组乘积

给定一个整数数组,求乘积最大的子数组的乘积值

解:

1)首先明确数组中的数可能是负数

2)设数组是vec[],这里我们在for循环中用一个max和min值分别记录包含0~i中包含vec[i]的子数组的乘积的最大值和最小值,为什么一定是包含vec[i]呢,因为只有在这个定义之下,我们才能由i计算到i+1

3)那么包含vec[i]的子数组乘积的最大值就是vec[i],vec[i]*max,vec[i]*min中的最大值(当min和vec[i]同为负,相乘得到最大值),更新max值

4)循环中同时更新min,min就是vec[i],vec[i]*max,vec[i]*min中的最小值

5)返回的结果max_product,是以0~size-1结尾的子数组乘积最大值的最大值

代码:

int Max_product(vector<int>& vec) {int size = vec.size();int max_product = vec[0];int _min = vec[0];int _max = vec[0];for (int i = 1; i < size; i++) {int copy_max = _max;_max = max(max(vec[i], vec[i]*_max), vec[i]*_min);_min = min(min(vec[i], vec[i]*_min), vec[i]*copy_max);max_product = max(max_product, _max);}return max_product;
}

动态规划经典入门级题目*2及详解相关推荐

  1. 1000以内完数c语言程序_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include &q ...

  2. c语言sort函数_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include 2. ...

  3. python小游戏代码大全-20行python代码的入门级小游戏的详解

    背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...

  4. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  5. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  6. kmeans python interation flag_机器学习经典算法-logistic回归代码详解

    一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...

  7. AI 以 5:0 比分击败美顶级飞行员;经典对抗攻击 Deepfool 原理详解

    开发者社区技术周刊又和大家见面了,快来看看这周有哪些值得我们开发者关注的重要新闻吧. 2019 年全球公共云服务市场总额达 2334 亿美元 新里程碑!IBM 宣布最高量子体积 64 马斯克将通过实时 ...

  8. 算法 经典的八大排序算法详解和代码实现

    算法 经典的八大排序算法详解和代码实现 排序算法的介绍 排序的分类 算法的时间复杂度 时间频度 示例 图表理解时间复杂度的特点 时间复杂度 常见的时间复杂度 空间复杂度 排序算法的时间复杂度 冒泡排序 ...

  9. 四川话四级考试题目答案及详解(二)

    四川话四级考试题目答案及详解(二) --阿风 下面是四川话四级考试中多选题和填空题的答案及详解: 二.多选题 下面句子中"整"字用法正确的是?(4分) A.你这个发型整的还巴适哈! ...

最新文章

  1. WebKit、Gecko使用图形库
  2. 分享一下我为什么可以获得ssp
  3. Leangoo敏捷开发项目管理软件-工作日志
  4. 一文详述Attention最新进展
  5. svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
  6. 【MySQl】MyISAM和InnoDB索引对比
  7. 湖南警察学院计算机科学与技术专业,湖南警察学院计算机科学与技术专业2015年在福建理科高考录取最低分数线...
  8. 计算机放样在钢结构应用,计算机放样应用于钢结构工程
  9. 《运筹学》CSU作业答案
  10. C 与 C++ 谁的效率高,为什么?
  11. 【LibTorch】Microsoft C++ 异常: c10::NotImplementedError,位于内存位置 0x000000E8A9DAEDC0 处。
  12. 数据采集之全埋点数据采集分析方法的一些整理
  13. C语言运算符优先级及结合性
  14. 西电计算机通信与网络复习
  15. 【10月20日】CCF HPC China 2021中国高性能计算学术年会
  16. E Enigmatic Partition 2020牛客暑期多校训练营(第八场)
  17. TM1652控制-2
  18. leetcode28.实现strStr()--简单词学KPM算法
  19. MySQL Order by 和 max哪个性能更高更好?
  20. DTCC2022 | openGauss打造企业级开源数据库,服务行业核心系统

热门文章

  1. Processing of multipart/form-data request failed. Stream ended unexpectedly
  2. 七种公司做不大,十种老板成不了事
  3. Scala语言超详细介绍(上)
  4. 率土之滨九游不显示服务器,率土之滨九游版
  5. 率土之滨服务器维护6,率土之滨几天开6,多少战力可以开6
  6. ADS中示例文件.7zads格式的打开
  7. 女人要学会的四种气质
  8. MMO即时战斗:地图角色同步管理和防作弊实现
  9. codeforce #501 c Misha and Forest
  10. [siggraph19]《荒野大镖客2》的大气云雾技术(3/4)