当前位置: 首页 > news >正文

广告业网站开发制作游戏需要多少钱

广告业网站开发,制作游戏需要多少钱,手机桌面布局设计软件,基于互联网 模式下的安全网站建设代码随想录算法训练营第58天#xff5c;动态规划part15#xff5c;392.判断子序列、115.不同的子序列 392.判断子序列 392.判断子序列 思路#xff1a; #xff08;这道题也可以用双指针的思路来实现#xff0c;时间复杂度也是O(n)#xff09; 这道题应该算是编辑距…代码随想录算法训练营第58天动态规划part15392.判断子序列、115.不同的子序列 392.判断子序列 392.判断子序列 思路 这道题也可以用双指针的思路来实现时间复杂度也是O(n) 这道题应该算是编辑距离的入门题目因为从题意中我们也可以发现只需要计算删除的情况不用考虑增加和替换的情况。 所以掌握本题的动态规划解法是对后面要讲解的编辑距离的题目打下基础。 动态规划五部曲分析如下 确定dp数组dp table以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串s和以下标j-1为结尾的字符串t相同子序列的长度为dp[i][j]。 注意这里是判断s是否为t的子序列。即t的长度是大于等于s的。 确定递推公式 在确定递推公式的时候首先要考虑如下两种操作整理如下 if (s[i - 1] t[j - 1]) t中找到了一个字符在s中也出现了if (s[i - 1] ! t[j - 1]) 相当于t要删除元素继续匹配 if (s[i - 1] t[j - 1])那么dp[i][j] dp[i - 1][j - 1] 1;因为找到了一个相同的字符相同子序列长度自然要在dp[i-1][j-1]的基础上加1如果不理解在回看一下dp[i][j]的定义 if (s[i - 1] ! t[j - 1])此时相当于t要删除元素t如果把当前元素t[j - 1]删除那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了即dp[i][j] dp[i][j - 1]; dp数组如何初始化 从递推公式可以看出dp[i][j]都是依赖于dp[i - 1][j - 1] 和 dp[i][j - 1]所以dp[0][0]和dp[i][0]是一定要初始化的。 这里大家已经可以发现在定义dp[i][j]含义的时候为什么要表示以下标i-1为结尾的字符串s和以下标j-1为结尾的字符串t相同子序列的长度为dp[i][j]。 因为这样的定义在dp二维矩阵中可以留出初始化的区间如图 如果要是定义的dp[i][j]是以下标i为结尾的字符串s和以下标j为结尾的字符串t初始化就比较麻烦了。 dp[i][0] 表示以下标i-1为结尾的字符串与空字符串的相同子序列长度所以为0. dp[0][j]同理。 vectorvectorint dp(s.size() 1, vectorint(t.size() 1, 0)); 确定遍历顺序 同理从递推公式可以看出dp[i][j]都是依赖于dp[i - 1][j - 1] 和 dp[i][j - 1]那么遍历顺序也应该是从上到下从左到右 举例推导dp数组 dp[i][j]表示以下标i-1为结尾的字符串s和以下标j-1为结尾的字符串t 相同子序列的长度所以如果dp[s.size()][t.size()] 与 字符串s的长度相同说明s与t的最长相同子序列就是s那么s 就是 t 的子序列。 图中dp[s.size()][t.size()] 3 而s.size() 也为3。所以s是t 的子序列返回true。 代码 python class Solution(object):def isSubsequence(self, s, t)::type s: str:type t: str:rtype: booldp [[0] * (len(t)1) for _ in range(len(s)1)]for i in range(1, len(s)1):for j in range(1, len(t)1):if s[i-1] t[j-1]:dp[i][j] dp[i-1][j-1] 1else:dp[i][j] dp[i][j-1]return dp[-1][-1] len(s)115.不同的子序列 115.不同的子序列 思路 动态规划五部曲 确定dp数组dp table以及下标的含义 dp[i][j]以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。 确定递推公式 这一类问题基本是要分析两种情况 s[i - 1] 与 t[j - 1]相等s[i - 1] 与 t[j - 1] 不相等 当s[i - 1] 与 t[j - 1]相等时dp[i][j]可以有两部分组成。 一部分是用s[i - 1]来匹配那么个数为dp[i - 1][j - 1]。即不需要考虑当前s子串和t子串的最后一位字母所以只需要 dp[i-1][j-1]。 一部分是不用s[i - 1]来匹配个数为dp[i - 1][j]。 这里可能有录友不明白了为什么还要考虑 不用s[i - 1]来匹配都相同了指定要匹配啊。 所以当s[i - 1] 与 t[j - 1]相等时dp[i][j] dp[i - 1][j - 1] dp[i - 1][j]; 当s[i - 1] 与 t[j - 1]不相等时dp[i][j]只有一部分组成不用s[i - 1]来匹配就是模拟在s中删除这个元素即dp[i - 1][j] 所以递推公式为dp[i][j] dp[i - 1][j]; dp数组如何初始化 从递推公式dp[i][j] dp[i - 1][j - 1] dp[i - 1][j]; 和 dp[i][j] dp[i - 1][j]; 中可以看出dp[i][j] 是从上方和左上方推导而来如图那么 dp[i][0] 和dp[0][j]是一定要初始化的。 每次当初始化的时候都要回顾一下dp[i][j]的定义不要凭感觉初始化。 dp[i][0]表示什么呢 dp[i][0] 表示以i-1为结尾的s可以随便删除元素出现空字符串的个数。 那么dp[i][0]一定都是1因为也就是把以i-1为结尾的s删除所有元素出现空字符串的个数就是1。 再来看dp[0][j]dp[0][j]空字符串s可以随便删除元素出现以j-1为结尾的字符串t的个数。 那么dp[0][j]一定都是0s如论如何也变成不了t。 最后就要看一个特殊位置了即dp[0][0] 应该是多少。 dp[0][0]应该是1空字符串s可以删除0个元素变成空字符串t。 vectorvectorlong long dp(s.size() 1, vectorlong long(t.size() 1)); for (int i 0; i s.size(); i) dp[i][0] 1; for (int j 1; j t.size(); j) dp[0][j] 0; // 其实这行代码可以和dp数组初始化的时候放在一起但我为了凸显初始化的逻辑所以还是加上了。确定遍历顺序 从递推公式dp[i][j] dp[i - 1][j - 1] dp[i - 1][j]; 和 dp[i][j] dp[i - 1][j]; 中可以看出dp[i][j]都是根据左上方和正上方推出来的。 所以遍历的时候一定是从上到下从左到右这样保证dp[i][j]可以根据之前计算出来的数值进行计算。 for (int i 1; i s.size(); i) {for (int j 1; j t.size(); j) {if (s[i - 1] t[j - 1]) {dp[i][j] dp[i - 1][j - 1] dp[i - 1][j];} else {dp[i][j] dp[i - 1][j];}} }举例推导dp数组 以s“baegg”tbag为例推导dp数组状态如下 代码 python class Solution:def numDistinct(self, s: str, t: str) - int:dp [[0] * (len(t)1) for _ in range(len(s)1)]for i in range(len(s)):dp[i][0] 1for j in range(1, len(t)):dp[0][j] 0for i in range(1, len(s)1):for j in range(1, len(t)1):if s[i-1] t[j-1]:dp[i][j] dp[i-1][j-1] dp[i-1][j]else:dp[i][j] dp[i-1][j]return dp[-1][-1]
http://www.yutouwan.com/news/250549/

相关文章:

  • 网站 公众号信息化建设工作深圳外贸人才网
  • 廊坊企业建站网站专业术语中seo意思是
  • 多站点wordpress安装平面设计有什么网站
  • 传奇网页游戏下载金华关键词优化平台
  • 十堰网站建设怎么样六枝特区建设局网站
  • 网页设计制作个人网站网站做自己的超链接
  • 商务网站模块设计时前台基础设施建设表格制作教程从零开始
  • 物业公司网站模板wordpress媒体库配置
  • 网站上的动态图怎么做的一键生成器
  • asp.net网站开发与项目实战wordpress单页调用标题
  • 免费中学网站模板百度灰色关键词排名
  • 西安网页设计师培训班百度搜索引擎优化公司哪家强
  • 如何将视频添加到网站上北京企业建网站定制价格
  • 开发一个网站需要多久英文外贸网站制作
  • 网站开发有哪些技术专业做相册书的网站
  • 建设快卡额度查询网站深圳 网站托管
  • 连运港网络公司做网站资阳seo快速排名
  • 网站网站呼和浩特做网站哪家好
  • 昆明市网站建设网站别人备案怎么办
  • 公司网站的设计规划专业建设金融行业网站的公司
  • 岳阳企业网站建设软件开发主要是干什么的
  • 自己做微信优惠券需要网站国外app推广平台有哪些
  • 建设银行网盾进不去网站是怎么办在微信公众号发布wordpress
  • 免费网站建站有哪些免费的破解版wordpress主题
  • 网站制作 番禺wordpress 100万数据
  • 集团微信网站方案策划管理系统网站模板下载
  • wordpress页面怎么加入php网页怎么给自己的网站做优化
  • 网站程序组成深圳自己做网站 服务器
  • wengdo网站开发创意设计葫芦岛市营商环境建设管理局网站
  • 如何做网站上抓视频国内做网站大公司