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

diywap手机网站系统本科软件开发专业

diywap手机网站系统,本科软件开发专业,网站维护报价表,做招聘信息的网站给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例1: 输入:word1 "horse", word2 "ros" 输出&#…

给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

示例1:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')

示例2:

输入:word1 = "intention", word2 = "execution"
输出:5
解释:
intention -> inention (删除 't')
inention -> enention (将 'i' 替换为 'e')
enention -> exention (将 'n' 替换为 'x')
exention -> exection (将 'n' 替换为 'c')
exection -> execution (插入 'u')

提示:

  • 0 <= word1.length, word2.length <= 500
  • word1 和 word2 由小写英文字母组成

题解:

动态规划

 1.自底向上的递推法,从起点状态开始扫描,输出值为终点状态值,需要填整个动态规划状态表,尽管不是所有的状态都对终点状态的计算有直接贡献,有些状态其实没有必要计算。递推填表的时间复杂度O(M*N),空间复杂度可以从O(M*N)优化到O(N)。

2.自顶向下的递推法,从终点状态开始调用递归,扫描所有必需的状态空间,只需要填一部分的动态规划表,有些不必要的状态可以直接避免计算。这里的递归法其实是一种深度优先的办法去扫描动态规划的有效状态空间。对于递归过程中的重复计算,可以用记忆性方法剪枝来提高效率。记忆化递归的平均时间复杂度O(M*N),但是时间常数项比递推填表的要小一半,速度更快,极端情况下,记忆化递归的时间复杂度可以将为O(N)但是空间复杂度不能优化,为O(M*N)。

动态规划的状态空间dp是二维状态空间数组,由word1和word2张开(最开始补一位空字符)

dp[i][j]代表word1的前i-1个字符的子串与word2的前j-1个字符的子串的编辑距离。

题意简单讲就是:对应字符相同则不用编辑,字符不同则需要编辑。状态转移为:

若最右边的字符相同,则不用编辑字符,退化到均减少一个字符的状态:

dp[i][j] = dp[i-1][j-1]

若最右边的字符不同,则通过一次增删或替换操作,联系到其他状态:

dp[i][j] = 1+min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])

其中,dp[i-1][j]是删除操作,dp[i][j-1]是插入操作,dp[i-1][j-1]是替换操作

初始条件:

dp[i][0] = i;

dp[0][j]=j;

动态规划----递推填表

以word1 = "horse", word2 = "ros"为例:
dp = [[0, 1, 2, 3],  ""[1, 1, 2, 3],  h[2, 2, 1, 2],  o[3, 2, 2, 2],  r[4, 3, 3, 2],  s[5, 4, 4, 3]]  e""  r  o  s
""是最开始补的一位空字符。
又比如对于word1 = "horse", word2 = "horse"
dp = [[0, 1, 2, 3, 4, 5],  ""[1, 0, 1, 2, 3, 4],  h[2, 1, 0, 1, 2, 3],  o[3, 2, 1, 0, 1, 2],  r[4, 3, 2, 1, 0, 1],  s[5, 4, 3, 2, 1, 0]]  e""  h  o  r  s  e
static inline int Min(const int a, const int b, const int c) {int min = (a < b) ? a : b;return (min < c) ? min : c;
}int minDistance(char * word1, char * word2){int m = strlen(word1), n = strlen(word2);int dp[m + 1][n + 1];for (int i = 0; i < m + 1; i++) {dp[i][0] = i;}for (int j = 1; j < n + 1; j++) {dp[0][j] = j;}for (int i = 1; i < m + 1; i++) {for (int j = 1; j < n + 1; j++) {if (word1[i - 1] == word2[j - 1]) {dp[i][j] = dp[i - 1][j - 1];} else {dp[i][j] = 1 + Min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);}}}return dp[m][n];
}

文章转载自:

http://iBAqRqai.Lbxhy.cn
http://ygvxFxX3.Lbxhy.cn
http://zHvNpoiy.Lbxhy.cn
http://ohWP6QEu.Lbxhy.cn
http://uuF7gQQJ.Lbxhy.cn
http://wNTvQWgj.Lbxhy.cn
http://jcwGkN4X.Lbxhy.cn
http://FDhyJdvX.Lbxhy.cn
http://KNr1D6Yi.Lbxhy.cn
http://jtbjr73G.Lbxhy.cn
http://ojzuFjvI.Lbxhy.cn
http://5o68R8AM.Lbxhy.cn
http://P6ZfqzL9.Lbxhy.cn
http://FJIpcrQq.Lbxhy.cn
http://sk9CRxBG.Lbxhy.cn
http://eKi5Mkbh.Lbxhy.cn
http://PlA1pFsS.Lbxhy.cn
http://4v8OhIGI.Lbxhy.cn
http://VHtbP19Z.Lbxhy.cn
http://FmIntWUG.Lbxhy.cn
http://UaLkiLDC.Lbxhy.cn
http://n6dPzEC9.Lbxhy.cn
http://zm07tO04.Lbxhy.cn
http://IekxqKUP.Lbxhy.cn
http://3gbtEveY.Lbxhy.cn
http://3YOoL2kp.Lbxhy.cn
http://NzQBmAeW.Lbxhy.cn
http://vEBzbOzA.Lbxhy.cn
http://3yfXlYG3.Lbxhy.cn
http://jDwW40a8.Lbxhy.cn
http://www.dtcms.com/wzjs/725272.html

相关文章:

  • 网站服务内容填网站建设可以做电商设计在哪个网站接单
  • 使用vue做简单网站教程安徽六安特产有哪些
  • 制作一个响应式网站开发工具室内设计公司排行榜济宁
  • wordpress设置自动更新西安网站建设seo优化
  • Wordpress网站防止采集2014 网站建设
  • 做包装一般看什么网站怎么看别人网站怎么做的
  • 博客导入wordpress西安seo网站关键词优化
  • 大连开发区网站制作建设公司r语言做网站
  • php网站建设安装环境天津网站建设-中国互联
  • 北京市网站制作公司如何搭建一个企业子账号网站
  • 中国建设银行龙网站首页公司简介模板下载
  • 免费建设工程信息网站免费做彩页网站
  • 营销网站的建立网络推广工具大全
  • wordpress开发入门视频教程电脑优化软件排行榜
  • 网站制作尺寸建设银行手机app下载
  • 建设电子商务网站总结聊城设计网站
  • 怎么给网站上传附件wordpress 网速
  • asp网站 换模板百度移动
  • 学生处网站建设招标公告wordpress 强制ssl
  • 手机网站设计尺寸毫米北京大龙建设集团有限公司网站
  • 荥阳市建设局 网站住房和城乡建设部网站一级建造师
  • wordpress 制作网站模板教程wordpress wp roket
  • 南海营销网站建设怎么架设个人网站
  • 前台和后台网站开发的区别新手机发布
  • 网站外部链接怎么做大型行业门户网站开发
  • 做外贸如何建网站东莞路桥投资建设公司招聘
  • 做网站图片和文字字体侵权湖南常德通报1例复阳病例
  • 单位网站 单位网页 区别吗网站推广方式案例
  • 设计师导航网站大全阳谷做网站
  • 岳阳网站建设团队网站与网页的关系