![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
写吧HJ
向着数据研发工程师不断努力
展开
-
算法题目总结 -- 最长公共子串
问题描述 描述: 计算两个字符串的最大公共子串(Longest Common Substring)的长度,字符不区分大小写。 输入: 输入两个字符串 输出: 输出一个整数 样例输入: asdfas werasdfaswer 样例输出: 6 解题思路 这里的最大公共字串要求的字串是连续的。求字串的方法和求子序列方法类似: 当str1[i] == str2[j]时,子序列长度veca[i][j] = ...原创 2019-03-21 21:58:46 · 811 阅读 · 0 评论 -
算法题目总结 -- 最长公共子序列
问题描述 在两个字符串中,有些字符会一样,可以形成的子序列也有可能相等,因此,长度最长的相等子序列便是两者间的最长公共字序列,其长度可以使用动态规划来求。以s1={1,3,4,5,6,7,7,8},s2={3,5,7,4,8,6,7,8,2}为例。 最长公共子序列与最长公共子串问题的区别为: 子序列意味着子串可以不必在母串中连续存在 解题思路 求最长子序列长度 两个字符串对应的最长公共子序列不一...原创 2019-03-21 22:06:40 · 416 阅读 · 0 评论 -
算法题目总结 -- 正则表达式匹配
问题描述 请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配 解题思路 这道题采取动态规划的方式来解答。 首先,定义一个二维数组DP[][],DP[i][j]表示...原创 2019-03-21 23:04:41 · 519 阅读 · 0 评论 -
不同路径( leetcode62题)
题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 向右 -> 向右 -> 向下 向右 -&...原创 2019-03-27 11:55:06 · 92 阅读 · 0 评论 -
不同路径( leetcode63题)
题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 示例 1: 输入: [ [0,0,0], [0,1,0], [0,0,0] ] 输出: 2 解释: 3x3 网格的正中间有一个障...原创 2019-03-27 11:57:01 · 158 阅读 · 0 评论 -
不同路径( leetcode64题)
题目描述 在二维网格 grid 上,有 4 种类型的方格: • 1 表示起始方格。且只有一个起始方格。 • 2 表示结束方格,且只有一个结束方格。 • 0 表示我们可以走过的空方格。 • -1 表示我们无法跨越的障碍。 返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目,每一个无障碍方格都要通过一次。 示例 1: 输入:[[1,0,0,0],[0,0,0,0],[0,0...原创 2019-03-27 12:02:59 · 173 阅读 · 0 评论 -
华为在线笔试题 - n个任务,m个执行机器求最小时间的升级版问题
题目 问题分解 华为这道题出的比较难,问题不仅涉及动态规划,更涉及到后续洗杯子的问题。 所以解题分为两部分: 通过动态规划,计算每个咖啡机锁需要煮的咖啡数目 通过某种策略,计算洗杯子所需要的最小时间 动态规划求解咖啡机的任务分配 动态规划的两大要点 ==》 定义子问题的形式 定义在所有子问题上通用的处理逻辑 子问题的形式 在m个咖啡机的前提下,由j(1<=j<=n)来唯一的...原创 2019-04-07 19:25:27 · 7280 阅读 · 0 评论 -
腾讯2019春招实习生在线笔试第三题
题目描述 解题思路 采用动态规划的思路解决这一问题。 动态规划的关键思路是找到子问题的形式和在子问题中解决问题的同一逻辑。 子问题的定义 在这一题中,我们的子问题形式是,在给定武力值数组和金币数组的前提下,由当前所处的位置以及当前所拥有的被保护的战斗值,即可定义一个子问题。 处理逻辑 如果当前的被保护战斗值小于怪兽的战斗值,则返回当前 金币数+(位置+1, 被保护战斗值+当前怪兽战斗值)...原创 2019-04-07 19:28:58 · 233 阅读 · 0 评论