c++最长公共子串问题怎么解决


这篇文章主要讲解了“c++最长公共子串问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c+ 香港云主机+最长公共子串问题怎么解决”吧!有两个字符串(可能包含空格),请找出其中最长的公共连续子串,输出其长度。(长度在1000以内)例如:输入:abcde bcd输出:31、把两个字符串分别以行和列组成一个二维矩阵。2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。3、通过查找出值为1的最长对角线就能找到最长公共子串。比如:str=acbcbcef,str2=abcbced,则str和str2的最长公共子串为bcbce,最长公共子串长度为5。针对于上面的两个字符串我们可以得到的二维矩阵如下:从上图可以看到,str1和str2共有5个公共子串,但最长的公共子串长度为5。为了进一步优化算法的效率,我们可以再计算某个二维矩阵的值的时候顺便计算出来当前最长的公共子串的长度,即某个二维矩阵元素的值由record[i][j]=1演变为record[i][j]=1 +record[i-1][j-1],这样就避免了后续查找对角线长度的操作了。修改后的二维矩阵如下:递推公式为:当A[i] != B[j],dp[i][j] = 0当A[i] == B[j],若i = 0 || j == 0,dp[i][j] = 1否则 dp[i][j] = dp[i – 1][j – 1] + 1简化一下递推公式:当A[i] != B[j],dp[i][j] = 0否则 dp[i][j] = dp[i – 1][j – 1] + 1全部都归结为一个公式即可,二维数组默认值为0感谢各位的阅读,以上就是“c++最长公共子串问题怎么解决”的内容了,经过本文的学习后,相信大家对c++最长公共子串问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是开发云,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: php数组转json字符串的方法

本文小编为大家详细介绍“php数组转json字符串的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“php数组转json字符串的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、方法说明(1)创建数组,数组转换为json格式…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/13 17:22
下一篇 07/13 17:22

相关推荐