再说说“从公共子串的角度求解最长公共子序列”。 在主程序里加几行代码,一并求出“最长公共子串”(附程序、VB源文件和实验文件)

作者在 2023-04-04 21:18:37 发布以下内容
程序是把2个字符串中的1个(我用下行txt2)从左到右逐个判断“留”或“去”,从而最终求得“最长公共子序列”的。而要求得“最长公共子串”,解题的思路是:★在每个公共子串结束时,测量该公共子串的长度,将其与储存的“最大值”比较……这是最常用的求最大值的方法,这里不赘述了,可以看代码。关键是,什么叫做“公共子串结束时”?
为此,设置1个Boolean 数据类型的变量:Righ,用以记录“上一个字符的判断结果”(也就是当前的★状态):如果它是“留下”的(①或③1),就记录 Righ = True 状态,(当然同时要累加公共子串的字数);如果它是“不留”的(②或③2),就记录 Righ = False 状态。那么,★在 “If Righ = True Then” 的状态下,发生了 “zn1 不等于 zn2”,就是“这个公共子串结束”了。(我在源文件的相应代码旁边注明“ '★公共子串结束 ”)。
更正.png (上传于2023-04-05 11:48:08)
更正.png

3个插图显示的是运行结果。
公共子串-2.png (上传于2023-04-04 21:18:37)
公共子串-2.png

公共子串-1.png (上传于2023-04-04 21:18:37)
公共子串-1.png

公共子串-3.png (上传于2023-04-04 21:18:37)
公共子串-3.png

默认分类 | 阅读 1052 次
文章评论,共0条
游客请输入验证码
浏览92271次
文章分类