主过程与函数几乎一样:(请参考2个附图)
把A、B两个字符串中的B、按从头到尾的顺序,逐个在A中寻找相同的字。会有3种结果:
1.直接找到(流程图中的“A”),于是这个字可以加入“最长序列”,然后n1+1、n2+1。这2个数的递增,保证了“一一对应”和“不颠倒顺序”。
2.从n1直到L1(A串的长度)都没有相同的字(流程图中的“Q”),那么这个字排除,且N2+1,而n1不增加,这样也遵守了上面的2个原则。
3.在A串的“延后几个字”(n1+k,k是延后的字数)找到(流程图中的“E”),这是必须按“最长”原则来定夺的,这正是“疑点”。函数中的“>”就是由此引起的。
下面重...
为什么这个程序既可以验证一些网上LCS论文中举出的“短字符例题”(图一),也可以对代码稍作更改后,在1秒内求出近千字的“(无提醒打错的)中文打字测验”文本的“正确字数”(图二)。相信你在看了我下面的的描述后,应该可以有所明白。
两个字串的“最长公共子序列”可以从这样的角度描述:有上下两个字串,把下字串从左到右每一个字在上面“找到相同的字”并“连线”。
有2个要求:1.连线不许交叉。2.连线数“最多”。于是,在两个字串中“剔除”了“无法连线”的字之后,剩下的字串就是“最长公共子序列”了。
★连线有3种情况,2种非常简单,1...