算法第三章实践报告
2019-10-22 00:24 绮罗生 阅读(172) 评论(0) 收藏 举报7-3 编辑距离问题 (30 分)
设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符串B,计算其编辑距离 d(A,B)。
输入格式:
第一行是字符串A,文件的第二行是字符串B。
提示:字符串长度不超过2000个字符。
输出格式:
输出编辑距离d(A,B)
输入样例:
在这里给出一组输入。例如:
fxpimu
xwrs
输出样例:
在这里给出相应的输出。例如:
5
问题描述:
我们需要将a字符串变成b字符串,用增添,删除,修改等方式。求出转变过程中运用的最少次数的方式。
算法描述:
这个问题其实是稍微有些难度的,但是我们只要写出他的递归关系,然后就可以根据递归关系来填表,问题便迎刃而解。
时间复杂度:O(n²)
心得体会:
第三章的这三个实验对于我们来说是既难,又不难。为什么会这样说呢?其实刚拿到三角形这道题的时候我脑袋一懵,老师上课讲的那些我是听懂了,可是真正实践起来的时候并非我想象中那样容易,并没有办法做到信手拈来,这使我有些懊丧。
但是幸好的是,我们组有一位同学在周末写完了之前的4道题目,她有了一些思路,在经过我们三人的讨论逐渐成型。这个时候我才体会到合作的乐趣。
其实第一道题相对我们来说并没有太大的难度,甚至第二题也能轻松解决。一二题目相对来说的确不是太难,很容易就能用填表的方法解决。难的是第三题。
……又得说万幸了,我们组的某个同学在实验室,老师才给他们说完这个例子,所以她对第三题非常理解,并且通过讲解让我们明白。
首先我们设了一个二维表,假设一行为a字符串,一列为b字符串,行列交错处的意思就是从b的那个字符串变成a需要花多少步骤,再慢慢利用填表的思想,我们就能解决这个问题。下面放上我们的代码:
浙公网安备 33010602011771号