/images/avatar.jpg

草祭の博客

动态规划

动态规划总结篇

dynamic programming, DP

什么是动态规划?

一句话解释:大事化小,小事化了
简单的解释:想办法将一个复杂的大问题拆成几个子问题,分别求解这些子问题,从而求出大问题的解。

什么样的题适合用DP求解?

具有以下两点特征的问题可以用DP求解:

Leetcode44 通配符匹配

LeetCode第44题是leetcode难度为hard的一个,解题方法是使用动态规划。题目内容可点击下面的黑色三角展开题目详情。

点击展开题目详情

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/wildcard-matching
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 ’?’ 可以匹配任何单个字符。 ’*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。 说明:
s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。 示例 1:
输入:
s = “aa”
p = “a”
输出: false
解释: “a” 无法匹配 “aa” 整个字符串。
示例 2:
输入:
s = “aa”
p = “*”
输出: true
解释: ‘*’ 可以匹配任意字符串。
示例 3:
输入:
s = “cb”
p = “?a”
输出: false
解释: ‘?’ 可以匹配 ‘c’, 但第二个 ‘a’ 无法匹配 ‘b’。
示例 4:
输入:
s = “adceb”
p = “*a*b”
输出: true
解释: 第一个 ‘*’ 可以匹配空字符串, 第二个 ‘*’ 可以匹配字符串 “dce”.

Leetcode712 两个字符串的最小ASCII删除和

Leetcode 712 Minimum ASCII Delete Sum for Two Strings 两个字符串的最小ASCII删除和(动态规划)

LeetCode试题来源链接
问题描述:
给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。
示例1:
输入: s1 = “sea”, s2 = “eat”
输出: 231
解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。
在 “eat” 中删除 “t” 并将 116 加入总和。
结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。
示例2:
输入: s1 = “delete”, s2 = “leet”
输出: 403
解释: 在 “delete” 中删除 “dee” 字符串变成 “let”,
将 100[d]+101[e]+101[e] 加入总和。在 “leet” 中删除 “e” 将 101[e] 加入总和。
结束时,两个字符串都等于 “let”,结果即为 100+101+101+101 = 403 。
如果改为将两个字符串转换为 “lee” 或 “eet”,我们会得到 433 或 417 的结果,比答案更大。

建站历史002

  • 添加鼠标跟随的鲸鱼特效
  • 添加访客人次计数功能(相同访客不重复累加)
  • 绑定价值199RMB的域名yyqx.online/
  • 添加网页图标

相关链接